私はアプリケーションでランタイムアクセス許可を実装していますが、CALL_PHONEのアクセス許可を表示できません。 read_contactとcall_phoneという2つのアクセス許可を表示する必要があります。私は完全にread_contactを表示できますが、call_phoneの許可は表示できません。実行時アクセス許可でManifest.permission.CALL_PHONEを表示できません
私はそれをテストするためにAVDエミュレータを使用しています。
いくつかのヘルプはapreciateされます!
これは私のコードです:
callPesmission.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
requestCallPhonePermission();
}
});
contactPesmission.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
requestContactsPermission();
}
});
private void requestContactsPermission() {
String locationPermission = Manifest.permission.READ_CONTACTS;
int hasPermission = ContextCompat.checkSelfPermission(getActivity(), locationPermission);
String[] permissions = new String[] { locationPermission };
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(permissions, REQUEST_CONTACTS);
} else {
Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show();
}
}
private void requestCallPhonePermission() {
String callPermission = Manifest.permission.CALL_PHONE;
int hasPermission = ContextCompat.checkSelfPermission(getActivity(), callPermission);
String[] permissions = new String[] { callPermission };
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(permissions, REQUEST_CALL_PHONE);
} else {
Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CONTACTS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), "READ_CONTACTS GRANTED", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "READ_CONTACTS DENIED", Toast.LENGTH_SHORT).show();
}
break;
case REQUEST_CALL_PHONE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), "CALL_PHONE GRANTED", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "CALL_PHONE DENIED", Toast.LENGTH_SHORT).show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
とにかく機能を使用しようとすると、セキュリティ例外がスローされることがありますが、あなた自身の答えを見た:)私たちの最高に起こる:)ランタイム権限をすることができ痛み – Kushan
はい、絶対に同意します –