android - Activity context null pointer error when checking for permissions at runtime -
i trying ensure on first run of alarm clock app permission read external storage newer devices.
i keep getting null pointer error context. on line:
if (contextcompat.checkselfpermission(context, manifest.permission.read_external_storage) != packagemanager.permission_granted)
and getting error:
caused by: java.lang.nullpointerexception: attempt invoke virtual method 'int android.content.context.checkpermission(java.lang.string, int, int)' on null object reference
i tried (activity) context, getparent(), this.context, getapplicationcontext , can see below context. of them had same result.
thanks in advance help.
this whole code:
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 necessary 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; } }
your variable context
null
, useless. use this
(which refers the current appcompatactivity
) or mainactivity.this
if need refer within inner class (such alertdialog
's onclick
method).
Comments
Post a Comment