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

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -