-1

アンドロイドのアプリケーションに許可を求めるダイアログボックスを表示し、ユーザーが許可を得たときに特定のコマンドを実行する方法を知りました。しかし、再起動しない限り、アプリが許可を持たないアンドロイドバグのために、その後にアプリを再起動することに固執しています。Android Mランタイム許可の問題

コードのように動作していないようです。アプリは再起動しますが、どこにいたのかはわかりません。最初の起動時にデバイスによって割り当てられたものと同じ優先順位を維持する。

// Schedule start after 1 second 
     PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_CANCEL_CURRENT); 
     AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     am.set(AlarmManager.RTC, System.currentTimeMillis() + 10000, pi); 

     // Stop now 
     System.exit(0); 

別の方法でアプリを再起動することができます。アプリを特定の操作を行うことが許可されているアプリに伝えることができます。

+1

許可を得るには、アプリを再起動する必要はありません。このようなAndroidのバグはありません。そのようなバグが存在すると思われる理由について、より多くの情報を投稿できますか? –

+0

アプリケーションを再起動しないでください。実行時に許可を求めるだけで、許可が与えられていなければクラッシュしないようにする必要があります。 – Shark

+0

私は許可された後に許可を変更しないでアプリの問題を言っていくつかの人々の記事を読んでいるバグです。この変更を行う唯一の方法は、アプリを完全に再起動することです。 – TheSwindler44

答えて

1

実行時にアクセス許可を要求すると、非同期で動作するので、アクセス権を求めるアクティビティではonRequestPermissionsResult()を上書きする必要があります。このように:

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


    switch (requestCode) { 
     case Constants.YOUR_REQUEST_CODE: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission was granted. do your stuff here 
      } else { 
       // Permission denied - Show a message to inform the user that this app only works 
       // with these permissions granted 

      } 
      return; 
     } 

    } 
} 
関連する問題