Android宣言権限

3290 ワード

AndroidManifestに権限を追加するにはどうすればいいですか?
エレメントを最上位エレメントの子として使用します.例えば、メールを送信する権限は、AndroidManifestに次のコード行を追加できます.


        

        
            ...
        

    

通常の権限と危険な権限
  • 通常の権限は、アプリケーションがその砂箱の外部データまたはリソースにアクセスすることをカバーするが、ユーザのプライバシーまたは他のアプリケーションに対する操作リスクが小さい領域、例えばタイムゾーンを取得する権限をカバーする.
  • 危険権限は、アプリケーションがユーザのプライバシー情報に関連するデータまたはリソース、またはユーザが格納したデータまたは他のアプリケーションの動作に影響を及ぼす可能性がある領域をカバーする.ユーザー連絡先の読み取りが危険な権限に属している場合.

  • システムバージョンとtargetSdkValersonの宣言権限への適用の影響
  • デバイスは、Android 5.1以降、またはtargetSdkValerson 22以下で動作します.リストに危険権限がリストされている場合、ユーザーはアプリケーションのインストール時にこの権限を付与します.ユーザーがこの権限を付与しない場合、システムはアプリケーションをインストールしません.
  • デバイスは、Android 6.0以降で実行されるか、targetSdkValerson 23以上のアプリケーションは、リストに権限をリストし、実行時に必要なすべての危険権限を要求する必要があります.ユーザーは、各権限を付与または拒否することができ、ユーザーが権限要求を拒否しても、アプリケーションは限られた機能を実行し続けることができます.

  • アクセス権の確認
    権限があるかどうかを確認するには、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
            }
        }