0
私は目覚まし時計アプリケーションの最初の実行時に、新しいデバイスの外部ストレージを読み取るためのアクセス許可を確保しようとしています。実行時にパーミッションをチェックするときのアクティビティコンテキストポインタのNULLポインタエラー
コンテキストでnullポインタエラーが発生し続けます。これは、この行にある:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
そして、私はこのエラーを取得しています:私は(活動)文脈、のgetParent()、this.context、getApplicationContextとあなただけの下に見ることができるよう
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference
てみましたコンテキスト。それらのすべてに同じ結果がありました。
ご協力いただきありがとうございます。
これは、全体のコードです:
public class MainActivity extends AppCompatActivity implements FragmentAddAlarms.onTabChangedListener {
public static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 123;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
boolean result = checkPermission();
if (result) {
//writeCalendarEvent();
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public boolean checkPermission()
{
int currentAPIVersion = Build.VERSION.SDK_INT;
if(currentAPIVersion>=android.os.Build.VERSION_CODES.M)
{
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage("External storage is necessary to for alarms!!!");
alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions((Activity)context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
} else {
ActivityCompat.requestPermissions((Activity)context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
return false;
} else {
return true;
}
} else {
return true;
}
}
compatメソッドを使用している場合は、 'currentAPIVersion> = android.os.Build.VERSION_CODES.M'は必要ありません。バージョンチェックが行われます。 – ianhanniballake
'MainActivity.this'は有効で非nullの' Context'です –