2017-06-12 11 views
1

私は小さな問題で苦労しています。私はAndroidアプリの開発には非常に新しいので、もしそれが愚かに見える私の質問をしてください。Android:ユーザーが許可した後にアプリをアクティブに保つにはどうすればよいですか?

私は自分のアプリケーションを起動すると、私は許可を求めるユーザーから、この時点で私は、アプリケーションの上にアクセス許可を要求するためのダイアログが表示されます。しかし、私が "許可"を押すことによって許可へのアクセスを許可すると、私のアプリはバックグラウンドで行き、次に私のアプリを再起動する必要があります。

ユーザーが「許可」ボタンを押して許可を与えた後、私のアプリにフォーカスを戻す正しい方法を知りたいので、手動でアプリケーションを再起動する必要はありませんか?

許可を尋ねるために私のコードは以下の通りです:

if (ActivityCompat.checkSelfPermission(MainActivity.this, READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 

     Log.e("Camera", "Permission to READ_EXTERNAL_STORAGE is not granted, let's ask user"); 
     ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE}, 1); 
    }else { 
     Log.e("Camera", "Permission to READ_EXTERNAL_STORAGE is already granted, let's find out pictures"); 
     File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()); 
// Going to get no of pictures available in the DCIM directory. 
     get_no_of_pictures(CameraDirectory); 
    } 
    Log.e("uEarn.Camera", "Finishing the CameraPhotos app"); 
    finish(); 
} 

}

+2

あなたのコードにfinish()があります。これがあなたのアクティビティが終了する理由です。 アクティビティのonRequestPermissionsResultメソッドをオーバーライドすることを忘れないでください。ユーザーが許可されているかどうかを知ることができます。 – Alex

+2

コードの最後にあるfinish()ステートメントは、アクティビティを閉じます。それを取り除くと、そこにとどまります。 –

+0

ありがとう、アレックスとクナル。それは実際にそのように働いた。 – Pagar

答えて

0

ちょうどそれが同じページにとどまるだろう、finish();を削除する必要があります。

しかし、以下のようにonRequestPermissionsResultでもっと多くのことを行うことができます。

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

     if (requestCode == 1) { 
      if (permissions != null) { 

       for (int i = 0; i < permissions.length; i++) { 
        if (Manifest.permission.READ_EXTERNAL_STORAGE.equalsIgnoreCase(permissions[i]) 
          && (grantResults[i] == PackageManager.PERMISSION_GRANTED)) { 
         File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()); 
// Going to get no of pictures available in the DCIM directory. 
         get_no_of_pictures(CameraDirectory); 

        } 
       } 
      } 
     } 

    } 
+0

こんにちは! ご意見ありがとうございます。私はこの機能を利用します。 requestCodeについてのもう1つの質問です。ここで、私はREADCEXのREAD_EXTERNAL_STORAGEのrequestCodeを見つけることができます。私はいくつかの例では1として渡されるのを見ましたが、各許可に対してrequestCodeがあるか、または1として渡される必要がありますか? ありがとう – Pagar

関連する問題