android6.0バージョンの権限申請処理
2257 ワード
android 6.0バージョンまでは、Android Minifestファイルで簡単に申請すればいいのですが、android 6.0バージョンはプライバシーの保護がより厳密で、権限メカニズムもいくつか変化しています.つまり、私たちが前に申請した権限が足りないということです.さらなる処理が必要だ.Googleが権限を2つの種類に分けていることを知っています.1つはNormal Permissionsで、このような権限は一般的にユーザーのプライバシーに関与せず、ユーザーの権限を必要としません.例えば、携帯電話の振動、ネットワークへのアクセスなどです.もう1つのクラスはDangerous Permissionで、一般的にはユーザーのプライバシーに関連しており、sdcardの読み取り、通信録へのアクセスなど、ユーザーの許可が必要です.以下の手順を追加するだけでよい(READ_EXTERNAL_STORAGEの例):1.権限があるかどうかを判断する
上からsaveFile()メソッドを呼び出すには、携帯電話のメモリに書き込む権限が必要であることがわかります.権限配列を送信することができますが、101はintタイプのリクエストコードで、次のコールバック方法で処理を判断することができます.2.コールバック方法
これでandroid 6ができました0以上のバージョンの権限が申請されました.
if (ContextCompat.checkSelfPermission(activity,Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 101);
}else{
saveFile(mBitmap, mFileName);
}
上からsaveFile()メソッドを呼び出すには、携帯電話のメモリに書き込む権限が必要であることがわかります.権限配列を送信することができますが、101はintタイプのリクエストコードで、次のコールバック方法で処理を判断することができます.2.コールバック方法
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case 101: {
if (grantResults.length > 0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
saveFile(mBitmap, mFileName);
} else {
ToastUtil.showShort(" ");
}
return;
}
}
}
これでandroid 6ができました0以上のバージョンの権限が申請されました.