2015-10-05 10 views

答えて

19

いいえ、ダイアログのテキストをカスタマイズすることはできませんが、許可を求める前に説明を提供することはできます。 developer.android.comから引用:

要求権限

あなたのアプリがアプリ マニフェストに記載されていた危険な許可を必要とする場合、それは権限を付与するユーザーを依頼する必要があります。 Android には、権限を要求するために使用できるいくつかの方法があります。 これらのメソッドを呼び出すと標準のAndroidダイアログが表示されますが、 ではカスタマイズできません。

は、アプリはいくつかの状況では権限

を必要とする理由、あなたが あなたのアプリが許可を必要とする理由ユーザーが理解しやすくしたい場合があります説明します。たとえば、ユーザーが 写真アプリを起動した場合、 アプリがカメラの使用を要求しても驚いていないかもしれませんが、ユーザーが にアクセスしたい理由を は理解できない場合があります連絡先。許可を要求する前に、 をユーザーに説明することを検討する必要があります。 は、説明でユーザーを圧倒したくないことに注意してください。あまりにも多くの説明を入力した場合、ユーザーは不満を感じてアプリケーションを削除する可能性があります。

あなたが使用する可能性がある方法の1つは、 ユーザーが既にその許可要求を拒否した場合にのみ説明を提供することです。ユーザーが に許可を必要とする機能を使用しようとしたが、 が許可要求を拒否している場合、そのユーザーは というユーザーに、なぜ の機能を許可する必要があるのか​​わからないことがわかります。そのような状況では、おそらく の説明を表示することをお勧めします。

ユーザーが説明を必要とする状況を見つけるのに役立つように、 は、 shouldShowRequestPermissionRationale()という便利な方法を提供しています。このメソッドは、 がこのアクセス権を以前に要求していて、ユーザが要求を が拒否した場合にtrueを返します。

9

我々は要求許可ダイアログをカスタマイズすることはできませんが、我々は、ユーザーに、なぜ私たちは以下を要求していることは、カスタム説明と方法であることをカスタム説明を提供することができます

private void checkForCameraPermission() { 
    // Here, thisActivity is the current activity 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { 
      AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this); 
      alertBuilder.setCancelable(true); 
      alertBuilder.setTitle("Camera permission necessary"); 
      alertBuilder.setMessage("FITsociety need camera permission to read barcode."); 
      alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        ActivityCompat.requestPermissions(BarCodeScannerActivity.this, 
          new String[]{Manifest.permission.CAMERA}, 
          MY_PERMISSIONS_REQUEST_CAMERA); 
       } 
      }); 

      AlertDialog alert = alertBuilder.create(); 
      alert.show(); 
     } else { 
      // No explanation needed, we can request the permission. 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.CAMERA}, 
        MY_PERMISSIONS_REQUEST_CAMERA); 
      // MY_PERMISSIONS_REQUEST_CAMERA is an 
      // app-defined int constant. The callback method gets the 
      // result of the request. 
     } 
    } else { 
     setBarCodeScannerView(); 
    } 
} 

上記の方法ではない場合は許可が既に付与されているかどうかを確認カスタム説明は、この方法

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) 

で必要とされる場合、それは、このメソッドのドキュメントはここに真のこのメソッドの戻り値shouldShowRequestPermissionRationale()あるチェックのみユーザーが権限ダイアログを拒否した場合、またはユーザーがアプリケーションの設定からアクセス許可を閉じた場合、カスタム説明付きの警告ダイアログが表示され、それが機能することをさらに期待してください。

関連する問題