* AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.content_provider">
<uses-permission android:name="android.permission.READ_CALL_LOG"></uses-permission> // 추가
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Content_Provider">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
* activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/btnCall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="통화 기록 가져오기"></Button>
<EditText
android:id="@+id/edtCall"
android:layout_width="match_parent"
android:layout_height="match_parent"></EditText>
</LinearLayout>
</LinearLayout>
* MainActivity.java
package com.example.content_provider;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CallLog;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
Button btnCall;
EditText edtCall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_CALL_LOG}, MODE_PRIVATE);
btnCall = (Button) findViewById(R.id.btnCall);
edtCall = (EditText) findViewById(R.id.edtCall);
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
edtCall.setText(getCallHistory());
}
});
}
public String getCallHistory(){
String[] callSet = new String[] { CallLog.Calls.DATE, CallLog.Calls.TYPE, CallLog.Calls.NUMBER, CallLog.Calls.DURATION };
Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, callSet, null, null, null);
if ( c == null)
{
return "통화기록 없음";
}
StringBuffer callBuff = new StringBuffer();
callBuff.append("\n날짜 : 구분 : 전화번호 : 통화시간\n\n");
c.moveToFirst();
do{
long callDate = c.getLong(0);
SimpleDateFormat datePattern = new SimpleDateFormat("yyyy-MM-dd");
String date_str = datePattern.format(new Date(callDate));
callBuff.append(date_str + ":");
if (c.getInt(1) == CallLog.Calls.INCOMING_TYPE)
{
callBuff.append("착신 :");
}
else
{
callBuff.append("발신 : ");
}
callBuff.append(c.getString(2)+ ":");
callBuff.append(c.getString(3)+ "초\n");
} while (c.moveToNext());
c.close();
return callBuff.toString();
}
}
* 실행 화면
'Android Studio' 카테고리의 다른 글
Android Studio - ListView2 (0) | 2021.03.08 |
---|---|
Android Studio - ListView (0) | 2021.03.08 |
Android Studio - Broadcast Receiver (0) | 2021.03.08 |
Android Studio - Thread (0) | 2021.03.08 |
Android Studio - SQLite_1 (가수 그룹 관리 DB 만들기) (2) | 2021.03.08 |