11package  com .zoontek .rnpermissions ;
22
33import  android .Manifest ;
4- import  android .annotation .SuppressLint ;
54import  android .app .Activity ;
65import  android .content .Context ;
76import  android .content .Intent ;
8- import  android .content .SharedPreferences ;
97import  android .content .pm .PackageManager ;
108import  android .net .Uri ;
119import  android .os .Build ;
@@ -36,10 +34,8 @@ public class RNPermissionsModule extends ReactContextBaseJavaModule implements P
3634
3735  private  static  final  String  ERROR_INVALID_ACTIVITY  = "E_INVALID_ACTIVITY" ;
3836  public  static  final  String  MODULE_NAME  = "RNPermissions" ;
39-   private  static  final  String  SETTING_NAME  = "@RNPermissions:NonRequestables" ;
4037
41-   private  final  SharedPreferences  mSharedPrefs ;
42-   private  final  SparseArray <Request > mRequests ;
38+   private  final  SparseArray <Callback > mCallbacks ;
4339  private  int  mRequestCode  = 0 ;
4440  private  final  String  GRANTED  = "granted" ;
4541  private  final  String  DENIED  = "denied" ;
@@ -48,26 +44,14 @@ public class RNPermissionsModule extends ReactContextBaseJavaModule implements P
4844
4945  public  RNPermissionsModule (ReactApplicationContext  reactContext ) {
5046    super (reactContext );
51-     mSharedPrefs  = reactContext .getSharedPreferences (SETTING_NAME , Context .MODE_PRIVATE );
52-     mRequests  = new  SparseArray <Request >();
47+     mCallbacks  = new  SparseArray <Callback >();
5348  }
5449
5550  @ Override 
5651  public  String  getName () {
5752    return  MODULE_NAME ;
5853  }
5954
60-   private  class  Request  {
61- 
62-     public  boolean [] rationaleStatuses ;
63-     public  Callback  callback ;
64- 
65-     public  Request (boolean [] rationaleStatuses , Callback  callback ) {
66-       this .rationaleStatuses  = rationaleStatuses ;
67-       this .callback  = callback ;
68-     }
69-   }
70- 
7155  private  @ Nullable  String  getFieldName (final  String  permission ) {
7256    if  (permission .equals ("android.permission.ACCEPT_HANDOVER" ))
7357      return  "ACCEPT_HANDOVER" ;
@@ -79,10 +63,10 @@ public Request(boolean[] rationaleStatuses, Callback callback) {
7963      return  "ACCESS_FINE_LOCATION" ;
8064    if  (permission .equals ("android.permission.ACCESS_MEDIA_LOCATION" ))
8165      return  "ACCESS_MEDIA_LOCATION" ;
82-     if  (permission .equals ("com.android.voicemail.permission.ADD_VOICEMAIL" ))
83-       return  "ADD_VOICEMAIL" ;
8466    if  (permission .equals ("android.permission.ACTIVITY_RECOGNITION" ))
8567      return  "ACTIVITY_RECOGNITION" ;
68+     if  (permission .equals ("com.android.voicemail.permission.ADD_VOICEMAIL" ))
69+       return  "ADD_VOICEMAIL" ;
8670    if  (permission .equals ("android.permission.ANSWER_PHONE_CALLS" ))
8771      return  "ANSWER_PHONE_CALLS" ;
8872    if  (permission .equals ("android.permission.BLUETOOTH_ADVERTISE" ))
@@ -127,6 +111,8 @@ public Request(boolean[] rationaleStatuses, Callback callback) {
127111      return  "SEND_SMS" ;
128112    if  (permission .equals ("android.permission.USE_SIP" ))
129113      return  "USE_SIP" ;
114+     if  (permission .equals ("android.permission.UWB_RANGING" ))
115+       return  "UWB_RANGING" ;
130116    if  (permission .equals ("android.permission.WRITE_CALENDAR" ))
131117      return  "WRITE_CALENDAR" ;
132118    if  (permission .equals ("android.permission.WRITE_CALL_LOG" ))
@@ -157,16 +143,13 @@ private boolean permissionExists(final String permission) {
157143  public  void  checkNotifications (final  Promise  promise ) {
158144    final  boolean  enabled  = NotificationManagerCompat 
159145      .from (getReactApplicationContext ()).areNotificationsEnabled ();
146+ 
160147    final  WritableMap  output  = Arguments .createMap ();
161148    final  WritableMap  settings  = Arguments .createMap ();
162149
163-     if  (enabled ) {
164-       output .putString ("status" , "granted" );
165-     } else  {
166-       output .putString ("status" , "blocked" );
167-     }
168- 
150+     output .putString ("status" , enabled  ? GRANTED  : BLOCKED );
169151    output .putMap ("settings" , settings );
152+ 
170153    promise .resolve (output );
171154  }
172155
@@ -207,8 +190,6 @@ public void checkPermission(final String permission, final Promise promise) {
207190
208191    if  (context .checkSelfPermission (permission ) == PackageManager .PERMISSION_GRANTED ) {
209192      promise .resolve (GRANTED );
210-     } else  if  (mSharedPrefs .getBoolean (permission , false )) {
211-       promise .resolve (BLOCKED );
212193    } else  {
213194      promise .resolve (DENIED );
214195    }
@@ -248,20 +229,14 @@ public void requestPermission(final String permission, final Promise promise) {
248229    if  (context .checkSelfPermission (permission ) == PackageManager .PERMISSION_GRANTED ) {
249230      promise .resolve (GRANTED );
250231      return ;
251-     } else  if  (mSharedPrefs .getBoolean (permission , false )) {
252-       promise .resolve (BLOCKED ); // not supporting reset the permission with "Ask me every time" 
253-       return ;
254232    }
255233
256234    try  {
257235      PermissionAwareActivity  activity  = getPermissionAwareActivity ();
258-       boolean [] rationaleStatuses  = new  boolean [1 ];
259-       rationaleStatuses [0 ] = activity .shouldShowRequestPermissionRationale (permission );
260236
261-       mRequests .put ( mRequestCode ,  new   Request (
262-         rationaleStatuses ,
237+       mCallbacks .put (
238+         mRequestCode ,
263239        new  Callback () {
264-           @ SuppressLint ("ApplySharedPref" )
265240          @ Override 
266241          public  void  invoke (Object ... args ) {
267242            int [] results  = (int []) args [0 ];
@@ -270,18 +245,15 @@ public void invoke(Object... args) {
270245              promise .resolve (GRANTED );
271246            } else  {
272247              PermissionAwareActivity  activity  = (PermissionAwareActivity ) args [1 ];
273-               boolean [] rationaleStatuses  = (boolean []) args [2 ];
274248
275-               if  (rationaleStatuses [0 ] &&
276-                 !activity .shouldShowRequestPermissionRationale (permission )) {
277-                 mSharedPrefs .edit ().putBoolean (permission , true ).commit (); // enforce sync 
278-                 promise .resolve (BLOCKED );
279-               } else  {
249+               if  (activity .shouldShowRequestPermissionRationale (permission )) {
280250                promise .resolve (DENIED );
251+               } else  {
252+                 promise .resolve (BLOCKED );
281253              }
282254            }
283255          }
284-         })) ;
256+         });
285257
286258      activity .requestPermissions (new  String [] {permission }, mRequestCode , this );
287259      mRequestCode ++;
@@ -309,8 +281,6 @@ public void checkMultiplePermissions(final ReadableArray permissions, final Prom
309281            : BLOCKED );
310282      } else  if  (context .checkSelfPermission (permission ) == PackageManager .PERMISSION_GRANTED ) {
311283        output .putString (permission , GRANTED );
312-       } else  if  (mSharedPrefs .getBoolean (permission , false )) {
313-         output .putString (permission , BLOCKED ); // not supporting reset the permission with "Ask me every time" 
314284      } else  {
315285        output .putString (permission , DENIED );
316286      }
@@ -345,9 +315,6 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr
345315      } else  if  (context .checkSelfPermission (permission ) == PackageManager .PERMISSION_GRANTED ) {
346316        output .putString (permission , GRANTED );
347317        checkedPermissionsCount ++;
348-       } else  if  (mSharedPrefs .getBoolean (permission , false )) {
349-         output .putString (permission , BLOCKED ); // not supporting reset the permission with "Ask me every time" 
350-         checkedPermissionsCount ++;
351318      } else  {
352319        permissionsToCheck .add (permission );
353320      }
@@ -360,42 +327,32 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr
360327
361328    try  {
362329      PermissionAwareActivity  activity  = getPermissionAwareActivity ();
363-       boolean [] rationaleStatuses  = new  boolean [permissionsToCheck .size ()];
364330
365-       for  (int  i  = 0 ; i  < permissionsToCheck .size (); i ++) {
366-         rationaleStatuses [i ] = activity 
367-           .shouldShowRequestPermissionRationale (permissionsToCheck .get (i ));
368-       }
369- 
370-       mRequests .put (mRequestCode , new  Request (
371-         rationaleStatuses ,
331+       mCallbacks .put (
332+         mRequestCode ,
372333        new  Callback () {
373-           @ SuppressLint ("ApplySharedPref" )
374334          @ Override 
375335          public  void  invoke (Object ... args ) {
376336            int [] results  = (int []) args [0 ];
377337            PermissionAwareActivity  activity  = (PermissionAwareActivity ) args [1 ];
378-             boolean [] rationaleStatuses  = (boolean []) args [2 ];
379338
380339            for  (int  j  = 0 ; j  < permissionsToCheck .size (); j ++) {
381340              String  permission  = permissionsToCheck .get (j );
382341
383342              if  (results .length  > 0  && results [j ] == PackageManager .PERMISSION_GRANTED ) {
384343                output .putString (permission , GRANTED );
385344              } else  {
386-                 if  (rationaleStatuses [j ] &&
387-                   !activity .shouldShowRequestPermissionRationale (permission )) {
388-                   mSharedPrefs .edit ().putBoolean (permission , true ).commit (); // enforce sync 
389-                   output .putString (permission , BLOCKED );
390-                 } else  {
345+                 if  (activity .shouldShowRequestPermissionRationale (permission )) {
391346                  output .putString (permission , DENIED );
347+                 } else  {
348+                   output .putString (permission , BLOCKED );
392349                }
393350              }
394351            }
395352
396353            promise .resolve (output );
397354          }
398-         })) ;
355+         });
399356
400357      activity .requestPermissions (permissionsToCheck .toArray (new  String [0 ]), mRequestCode , this );
401358      mRequestCode ++;
@@ -406,10 +363,9 @@ public void invoke(Object... args) {
406363
407364  @ Override 
408365  public  boolean  onRequestPermissionsResult (int  requestCode , String [] permissions , int [] grantResults ) {
409-     Request  request  = mRequests .get (requestCode );
410-     request .callback .invoke (grantResults , getPermissionAwareActivity (), request .rationaleStatuses );
411-     mRequests .remove (requestCode );
412-     return  mRequests .size () == 0 ;
366+     mCallbacks .get (requestCode ).invoke (grantResults , getPermissionAwareActivity ());
367+     mCallbacks .remove (requestCode );
368+     return  mCallbacks .size () == 0 ;
413369  }
414370
415371  private  PermissionAwareActivity  getPermissionAwareActivity () {
0 commit comments