2017-09-04 8 views
0

を働いていないランタイム権限は、これはOnCreateイベントで私のコード()メソッドである

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 1: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       init(); 
}else{ 
     finish(); 
} 

そして、私のマニフェストファイルには、次の権限を持っている

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"/> 

しかし、私はダイアログに許可を求めていませんが、問題を理解できませんか?

+0

チェックのような結果よりものコードの下に使用して、実行権限を追加 - かどうかを確認するために>権限 - >(アプリ名)アプリにはすでに許可が与えられています。 – Haem

答えて

1

は、Android 6.0(APIレベル23で始まり

ランタイム権限を追加します)、ユーザーは、アプリケーションの実行中ではなく、アプリケーションの実行中にアプリケーションにアクセス許可を与えます。

READ_SMS

String permission = Manifest.permission.READ_SMS; 
int grant = ContextCompat.checkSelfPermission(this, permission); 
if (grant != PackageManager.PERMISSION_GRANTED) { 
    String[] permission_list = new String[1]; 
    permission_list[0] = permission; 
    ActivityCompat.requestPermissions(this, permission_list, 1); 
} 

とハンドル設定 - >アプリケーションの下にこの

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == 1) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(AccountClass.this,"permission granted", Toast.LENGTH_SHORT).show(); 
      // perform your action here 

     } else { 
      Toast.makeText(AccountClass.this,"permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 
+0

ありがとうございます!それは動作します..あなたは私のコードで何が間違っているか教えてくれますか? –

+0

あなたは** READ_CONTACTS **権限を要求していますが、この権限はマニフェストファイルに追加されていません –

0

はこれを試してみてください:

if (ActivityCompat.checkSelfPermission(AddnewPhotoActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) 
        != PackageManager.PERMISSION_GRANTED) { 

       ActivityCompat.requestPermissions(AddnewPhotoActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_READ_EXTERNAL_STORAGE); 

      } else { 

       isPermissionGranted(true); 
      } 

isPermissionGranted(ブール値); ====>あなたのアプリは、Android 6.0および上記以外をターゲットにしている場合は、メソッド呼び出し

public void isPermissionGranted(boolean permission) { 
     if (permission) { 


      //Your Operation 


     } else { 

      Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

onRequestPermissionsResult

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

     if (requestCode == REQUEST_READ_EXTERNAL_STORAGE) { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       isPermissionGranted(true); 

      } else 

      { 
       isPermissionGranted(false); 
      } 
     } 

    } 
+0

まだ許可を求めるダイアログは表示されませんか? grantResultsがPERMISSION_DENIEDを渡しています –

関連する問題