Android宣言権限
3290 ワード
AndroidManifestに権限を追加するにはどうすればいいですか?
エレメントを最上位エレメントの子として使用します.例えば、メールを送信する権限は、AndroidManifestに次のコード行を追加できます.
通常の権限と危険な権限通常の権限は、アプリケーションがその砂箱の外部データまたはリソースにアクセスすることをカバーするが、ユーザのプライバシーまたは他のアプリケーションに対する操作リスクが小さい領域、例えばタイムゾーンを取得する権限をカバーする. 危険権限は、アプリケーションがユーザのプライバシー情報に関連するデータまたはリソース、またはユーザが格納したデータまたは他のアプリケーションの動作に影響を及ぼす可能性がある領域をカバーする.ユーザー連絡先の読み取りが危険な権限に属している場合.
システムバージョンとtargetSdkValersonの宣言権限への適用の影響デバイスは、Android 5.1以降、またはtargetSdkValerson 22以下で動作します.リストに危険権限がリストされている場合、ユーザーはアプリケーションのインストール時にこの権限を付与します.ユーザーがこの権限を付与しない場合、システムはアプリケーションをインストールしません. デバイスは、Android 6.0以降で実行されるか、targetSdkValerson 23以上のアプリケーションは、リストに権限をリストし、実行時に必要なすべての危険権限を要求する必要があります.ユーザーは、各権限を付与または拒否することができ、ユーザーが権限要求を拒否しても、アプリケーションは限られた機能を実行し続けることができます.
アクセス権の確認
権限があるかどうかを確認するには、ContextCompat.を呼び出します.checkSelfPermission()メソッド.例:
必要な権限を要求
要求権限:requestPermissions()
アクセス権リクエストへの応答
リクエスト権限を適用すると、ダイアログ・ボックスがユーザーに表示されます.ユーザが応答すると、onRequestPermissionsResult()メソッドが呼び出され、ユーザの応答が伝達されます.例:
エレメントを最上位エレメントの子として使用します.例えば、メールを送信する権限は、AndroidManifestに次のコード行を追加できます.
...
通常の権限と危険な権限
システムバージョンとtargetSdkValersonの宣言権限への適用の影響
アクセス権の確認
権限があるかどうかを確認するには、ContextCompat.を呼び出します.checkSelfPermission()メソッド.例:
/*
* , PackageManager.PERMISSION_GRANTED
* , PackageManager.PERMISSION_DENIED
*/
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR);
必要な権限を要求
要求権限:requestPermissions()
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {
} else {
// No explanation needed, we can request the permission.
// requestPermissions() ,
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
アクセス権リクエストへの応答
リクエスト権限を適用すると、ダイアログ・ボックスがユーザーに表示されます.ユーザが応答すると、onRequestPermissionsResult()メソッドが呼び出され、ユーザの応答が伝達されます.例:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}