Android | Manage permissions from a seperate class -


i try move of code manages android permissions mainactivity of app external class permissionmanager make code more readable , easier use.

public class permissionmanager implements activitycompat.onrequestpermissionsresultcallback  {      public static final int my_permissions_request_access_fine_location = 0;     public static final int my_permissions_request_internet = 1;      private activity activity;     private arraylist<permissionlistener> permissionlisteners = new arraylist<>();      private boolean locpermissions;     private boolean inetpermissions;      public permissionmanager(activity caller){         this.activity = caller;         locpermissions = false;         inetpermissions = false;     }      public boolean getpermission() {         return getpermission(activity);     }      public boolean getpermission(activity caller) {         if ( !hasinetpermissions(caller) || !haslocpermissions(caller) ) {              if (activitycompat.shouldshowrequestpermissionrationale(caller,                     android.manifest.permission.access_fine_location)) {                  // todo: explanation window                  activitycompat.requestpermissions(caller,                         new string[]{android.manifest.permission.access_fine_location},                         my_permissions_request_access_fine_location);             } else {                 activitycompat.requestpermissions(caller,                         new string[]{android.manifest.permission.access_fine_location},                         my_permissions_request_access_fine_location);             }         }         return haslocpermissions(caller) && haslocpermissions(caller);     }      public boolean hasinetpermissions() {         return inetpermissions;     }      public boolean hasinetpermissions(activity caller) {         return activitycompat.checkselfpermission(caller, manifest.permission.internet) == packagemanager.permission_granted;     }     public boolean haslocpermissions() {         return locpermissions;     }      public boolean haslocpermissions(activity caller) {         return activitycompat.checkselfpermission(caller, manifest.permission.access_fine_location) == packagemanager.permission_granted;     }      public void showmissinginetpermissiondialog() {         alertdialog.builder missingpermissionbuilder = new alertdialog.builder(activity);         missingpermissionbuilder.setmessage("you did not grant permission connect internet!")                 .settitle("error");         missingpermissionbuilder.setpositivebutton("ok", new dialoginterface.onclicklistener() {             public void onclick(dialoginterface dialog, int id) {             }         });         alertdialog missingpermissiondialog = missingpermissionbuilder.create();          missingpermissiondialog.show();     }      public void showmissinglocpermissiondialog() {         alertdialog.builder missingpermissionbuilder = new alertdialog.builder(activity);         missingpermissionbuilder.setmessage("you did not grant permission detect location!")                 .settitle("error");         missingpermissionbuilder.setpositivebutton("ok", new dialoginterface.onclicklistener() {             public void onclick(dialoginterface dialog, int id) {             }         });         alertdialog missingpermissiondialog = missingpermissionbuilder.create();          missingpermissiondialog.show();     }      public void showmissingpermissionsdialog() {         alertdialog.builder missingpermissionbuilder = new alertdialog.builder(activity);         missingpermissionbuilder.setmessage("some of required permissions have not been granted!\nyou won't able use core features of app if deny them")                 .settitle("missing permissions!");         missingpermissionbuilder.setpositivebutton("ok", new dialoginterface.onclicklistener() {             public void onclick(dialoginterface dialog, int id) {             }         });         alertdialog missingpermissiondialog = missingpermissionbuilder.create();          missingpermissiondialog.show();     }      public void addpermissionlistener(permissionlistener listener) {         permissionlisteners.add(listener);     }      public void removepermissionlistener(permissionlistener listener) {         permissionlisteners.remove(listener);     }      @override     public void onrequestpermissionsresult(int requestcode, @nonnull string permissions[], @nonnull int[] grantresults) {         switch (requestcode) {             case my_permissions_request_access_fine_location: {                 if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                      locpermissions = true;                     (int = 0; < permissionlisteners.size(); i++)                         permissionlisteners.get(i).onpermissionreceived(my_permissions_request_access_fine_location);                 }             }             case my_permissions_request_internet: {                 if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                      inetpermissions = true;                     (int = 0; < permissionlisteners.size(); i++)                         permissionlisteners.get(i).onpermissionreceived(my_permissions_request_internet);                 }             }         }     } } 

unfortunately no message displayed on activity if call getpermissions() or of showmissingpermission functions. assume problem behind is, can't display dialogs class not activity.

is there way "transfer" dialogs activity (that have saved field in permissionmanager) , let them shown there?

edit: messages being shown, onrequestpermissionsresult() not being called - neither in permissionmanager nor in activity passed requestpermission()


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? -