2017-07-04 9 views
-2

ランタイム時にユーザーにアクセス許可を求めているときに、下にあるオーバーレイダイアログを表示しています。 CALL_PHONEある実行時に許可を求めている間にアプリケーションを終了する

if(ContextCompat.checkSelfPermission(MainActivity.this,permissions) == PackageManager.PERMISSION_DENIED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permissions)) { 
      ActivityCompat.requestPermissions(MainActivity.this,new String[] {permissions}, requestCode); 
     } else 
      Toast.makeText(MainActivity.this,"Need Permission",Toast.LENGTH_LONG); 
    } 

マニフェスト

<uses-permission android:name="android.permission.CALL_PHONE" /> 

許可私が要求しています: Extra permission request

以下は私のコードです。

TIA

+0

あなたがマニフェストにそれを宣言しましたか? – Alessio

+0

また、shouldShowRequestPermissionRationale()を誤って使用しています。最初は偽となり、その後真となり、その後は再び偽となります。 checkSelfPermission()呼び出しの直後に初めてActivityCompat.requestPermissions()を直接呼び出す必要があります。少なくともAndroid(例:https://developer.android.com/training/permissions/requesting.html)を読んで、コードスニペットもあります。これは本当に基本的なものです。 – Alessio

+1

クラッシュログはどこにありますか?それを含めてください。 – Tigger

答えて

-1

たぶん、あなたはAndroidManifestにストロークを追加しませんでしたか? 私は以下のようにしました: AndroidManifestに追加されたストローク

次に、プログラムの実行時のアクセス許可を確認します。

MainActivity: verifyStoragePermissions(this);

public static void verifyStoragePermissions(Activity activity) { 
    // Check if we have write permission 
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 
     if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     } else { 
      ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); 
     } 
    } 
} 

次にMainActivityにつながるチェック:

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case Utils.REQUEST_EXTERNAL_STORAGE: { 
      // 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 
    } 
} 
+0

はい、私はマニフェストファイルの使用許可を追加しました。 Chakri

+0

コンテキストをアクティビティに変更します。エラーログが必要です。 – xdamir79

+0

コンソールにエラーはありません。上記のポップアップを表示した後、アプリケーションが終了するだけです。ユーザーが[OK]をクリックすると、彼は許可設定にリダイレクトされます。そうすれば、アプリケーションは終了します。 – Chakri

関連する問題