android6.0バージョンの権限申請処理

2257 ワード

android 6.0バージョンまでは、Android Minifestファイルで簡単に申請すればいいのですが、android 6.0バージョンはプライバシーの保護がより厳密で、権限メカニズムもいくつか変化しています.つまり、私たちが前に申請した権限が足りないということです.さらなる処理が必要だ.Googleが権限を2つの種類に分けていることを知っています.1つはNormal Permissionsで、このような権限は一般的にユーザーのプライバシーに関与せず、ユーザーの権限を必要としません.例えば、携帯電話の振動、ネットワークへのアクセスなどです.もう1つのクラスはDangerous Permissionで、一般的にはユーザーのプライバシーに関連しており、sdcardの読み取り、通信録へのアクセスなど、ユーザーの許可が必要です.以下の手順を追加するだけでよい(READ_EXTERNAL_STORAGEの例):1.権限があるかどうかを判断する
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以上のバージョンの権限が申請されました.