* MainActivity.java
public class MainActivity extends AppCompatActivity implements AutoPermissionsListener {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectContacts();
}
});
AutoPermissions.Companion.loadAllPermissions(this, 101);
}
public void selectContacts() {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 101);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 101) {
if (resultCode == RESULT_OK) {
Uri contactsUri = data.getData();
String id = contactsUri.getLastPathSegment();
getContacts(id);
}
}
}
public void getContacts(String id) {
Cursor cursor = null;
String name = "";
try {
cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.Data.CONTACT_ID + "=?",
new String[] {id},
null);
if (cursor.moveToFirst()) {
name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
println("Name : " + name);
String columns[] = cursor.getColumnNames();
for (String column : columns) {
int index = cursor.getColumnIndex(column);
String columnOutput = "#" + index + " -> [" + column + "] " + cursor.getString(index);
println(columnOutput);
}
cursor.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void println(String data) {
textView.append(data + "\n");
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
AutoPermissions.Companion.parsePermissions(this, requestCode, permissions, this);
}
@Override
public void onDenied(int requestCode, String[] permissions) {
Toast.makeText(this, "permissions denied : " + permissions.length, Toast.LENGTH_LONG).show();
}
@Override
public void onGranted(int requestCode, String[] permissions) {
Toast.makeText(this, "permissions granted : " + permissions.length, Toast.LENGTH_LONG).show();
}
}
* 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"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="연락처 가져오기" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFE57F">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</LinearLayout>
* AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
* Gradle
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.pedroSG94:AutoPermissions:1.0.3'
}
'android' 카테고리의 다른 글
GestureDetector Swipe (0) | 2020.02.12 |
---|---|
ProgressDialog (0) | 2020.02.10 |
갤러리 이미지 가져오기 (0) | 2020.02.05 |
SQLite 사용법 (0) | 2020.02.05 |
gson 사용법 (0) | 2020.02.04 |