연락처를 업로드하기 전에 사용자에게 연락처 권한을 요청해야하는 Android 응용 프로그램에서 작업하고 있습니다. 아래 코드는 Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
에 대한 연락처 허가를 위해 사용하고있는 코드입니다.모든 안드로이드 버전에 대한 문의 권한
하지만 문제는 내가 안드로이드 M에 항상 아래의 경우에도 접촉 권한을 요청해야한다는 것입니다. 모든 SDK 버전에서 작동해야하는 연락처 권한을 요청하는 방법
private void getContact(){
// Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
// startActivityForResult(intent, PICK_CONTACT);
}
public void askForContactPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Contacts access needed");
builder.setPositiveButton(android.R.string.ok, null);
builder.setMessage("please confirm Contacts access");//TODO put real question
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onDismiss(DialogInterface dialog) {
requestPermissions(
new String[]
{Manifest.permission.READ_CONTACTS}
, PERMISSION_REQUEST_CONTACT);
}
});
builder.show();
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_CONTACTS},
PERMISSION_REQUEST_CONTACT);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}else{
getContact();
}
}
else{
getContact();
}
}
int PERMISSION_REQUEST_CONTACT = 1;
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// getContact();
Toast.makeText(getApplicationContext(),"Permission is Done",Toast.LENGTH_LONG).show();
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
Toast.makeText(getApplicationContext(),"No permission for contacts",Toast.LENGTH_LONG).show();
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
이하 M을 입력하면 매니페스트 파일을 제외하고 외부 코드를 작성할 필요가 없습니다. – Spartan
@PushpendraChoudhary 여기에 의견을 보내 주셔서 감사합니다. 사실 내 요구 사항은 연락처 권한에 대한 메시지를 표시하는 것입니다. 아래 Android M에 프로그래밍 가능하게 문의 권한을 요청할 수 있습니까? –
문제는 Android M 아래에서 연락처 권한을 요청하지 않습니다. 이 SDK 수준 아래에서도 대화 상자를 표시해야합니다. –