1313 */
1414public final class XXPermissions {
1515
16- private final static SparseArray <OnPermission > mContainer = new SparseArray <>();
17-
18- private static long requestTime ;
16+ private final static SparseArray <OnPermission > sContainer = new SparseArray <>();
17+ private static long sRequestTime ;
1918
2019 private Activity mActivity ;
2120 private String [] mPermissions ;
@@ -72,7 +71,7 @@ public void request(OnPermission call) {
7271 do {
7372 //requestCode = new Random().nextInt(65535);//Studio编译的APK请求码必须小于65536
7473 requestCode = new Random ().nextInt (255 );//Eclipse编译的APK请求码必须小于256
75- } while (mContainer .get (requestCode ) != null );
74+ } while (sContainer .get (requestCode ) != null );
7675
7776 ArrayList <String > failPermissions = PermissionUtils .getFailPermissions (mActivity , mPermissions );
7877
@@ -81,9 +80,9 @@ public void request(OnPermission call) {
8180 call .hasPermission (Arrays .asList (mPermissions ));
8281 } else {
8382 //将当前的请求码和对象添加到集合中
84- mContainer .put (requestCode , call );
83+ sContainer .put (requestCode , call );
8584 //记录本次申请时间
86- requestTime = System .currentTimeMillis ();
85+ sRequestTime = System .currentTimeMillis ();
8786 //检测权限有没有在清单文件中注册
8887 PermissionUtils .checkPermissions (mActivity , mPermissions );
8988 //申请没有授予过的权限
@@ -107,7 +106,7 @@ public static boolean isHasPermission(Context context, String... permissions) {
107106 * @param context 上下文对象
108107 */
109108 public static void gotoPermissionSettings (Context context ) {
110- gotoPermissionSettings (context , false );
109+ PermissionUtils . gotoPermissionSettings (context , false );
111110 }
112111
113112 /**
@@ -125,27 +124,29 @@ public static void gotoPermissionSettings(Context context, boolean newTask) {
125124 */
126125 static void onRequestPermissionsResult (int requestCode , String [] permissions , int [] grantResults ) {
127126
128- OnPermission call = mContainer .get (requestCode );
127+ OnPermission call = sContainer .get (requestCode );
129128
130129 //根据请求码取出的对象为空,就直接返回不处理
131130 if (call == null ) return ;
132131
132+ //获取授予权限
133133 List <String > succeedPermissions = PermissionUtils .getSucceedPermissions (permissions , grantResults );
134- List <String > failPermissions = PermissionUtils .getFailPermissions (permissions , grantResults );
135134 //如果请求成功的权限集合大小和请求的数组一样大时证明权限已经全部授予
136135 if (succeedPermissions .size () == permissions .length ) {
137136 //代表申请的所有的权限都授予了
138137 call .hasPermission (succeedPermissions );
139138 }else {
139+ //获取拒绝权限
140+ List <String > failPermissions = PermissionUtils .getFailPermissions (permissions , grantResults );
140141 //代表申请的权限中有不同意授予的,如果拒绝的时间过快证明是系统自动拒绝
141- call .noPermission (failPermissions , System .currentTimeMillis () - requestTime < 200 );
142+ call .noPermission (failPermissions , System .currentTimeMillis () - sRequestTime < 200 );
142143 //证明还有一部分权限被成功授予,回调成功接口
143144 if (!succeedPermissions .isEmpty ()) {
144145 call .hasPermission (succeedPermissions );
145146 }
146147 }
147148
148149 //权限回调结束后要删除集合中的对象,避免重复请求
149- mContainer .remove (requestCode );
150+ sContainer .remove (requestCode );
150151 }
151152}
0 commit comments