私は実行時のアクセス許可を実装しようとしていますが、FragmentActivity
がonRequestPermissionResult()
の場合には問題はほとんどありません。 checkPermissions()
メソッドは非常にうまく動作しますが、onRequestPermissionResult()
はユーザーの許可または拒否のアクセス許可の後では呼び出されません。FragmentActivityでonRequestPermissionsResult()が呼び出されません
許可を要求するシステムダイアログボックスが表示された場合、MyActivity.onDestroy()
は呼び出されません。この問題に関連していますか?
私はすでにthis oneとanother oneに従ってみましたが、私は何かを逃したと思います。
私のデバイスはネクサス5X(アンドロイド6.0)とTarget SDKのバージョンが23 最小サポートSDKのバージョンですが、もちろん15 ですが、私はAndroidManifest.xml
に必要な権限を書き、build.gradleでV23のサポートライブラリを追加しました。
これは私のコードです:
public class MyActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkPermissions();
}
private void checkPermissions(){
String[] dangerousPermissions = {
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.GET_ACCOUNTS,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
};
for(String permission : dangerousPermissions){
if (!hasPermission(permission)) {
Log.e("permission.debug", "need to grant " + permission);
ActivityCompat.requestPermissions(this, dangerousPermissions, 4);
}
}
}
public boolean hasPermission(String permission){
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.d("permission.debug", " request code " + requestCode);
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == 0 && Manifest.permission.READ_PHONE_STATE.equals(permissions[i])) {
initiate();
}
}
}
}
これは私のコードのためのログです:
E/permission.debug: need to grant android.permission.READ_PHONE_STATE
E/permission.debug: need to grant android.permission.GET_ACCOUNTS
E/permission.debug: need to grant android.permission.WRITE_EXTERNAL_STORAGE
E/permission.debug: need to grant android.permission.RECORD_AUDIO
ありがとうございました。
への呼び出しでMyActivity.thisの代わりに、このを呼び出すことによってそれを修正、あなたのlogcatを共有していただけますか? –
このコードのログをいくつか取得しようとしましたが、エラーや警告はありませんでした。それは変です。 –
あなたはこの[link](https://stackoverflow.com/questions/32714787/android-m-permissions-onrequestpermissionsresult-not-being-called) –