diff --git a/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java b/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java index 0c2e2ff..74f8e12 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java +++ b/BaseLibrary/src/main/java/com/tfq/library/base/BaseFragment.java @@ -1,18 +1,13 @@ package com.tfq.library.base; import static com.tfq.library.app.BaseConstants.REQUEST_PER; -import static com.tfq.library.permission.PermissionUtils.convertToIPermissionArray; -import static com.tfq.library.permission.PermissionUtils.showGrantedPermissionsToast; -import android.Manifest; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; @@ -22,12 +17,12 @@ import androidx.fragment.app.Fragment; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.XXPermissions; import com.hjq.permissions.permission.base.IPermission; -import com.tfq.library.utils.LogK; +import com.hjq.toast.Toaster; +import com.tfq.library.R; +import com.tfq.library.permission.PermissionConverter; import com.tfq.library.view.Animation; import com.tfq.library.view.AuthDialog; -import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.List; /** @@ -71,29 +66,22 @@ public abstract class BaseFragment extends Fragment { /** * 权限请求 */ - protected void requestPermission(String[] per, Listener listener) { + protected void requestPermission(IPermission[] per,Listener listener) { requestPermission(per, content, listener); } - protected void requestPermission(String[] per, String content, Listener listener) { + protected void requestPermission(IPermission[] per, String content, Listener listener) { if (!TextUtils.isEmpty(content)) { this.content = content; } - requestPermission(per, content, true, false, listener); + requestPermission(per, content, true, listener); } - protected void requestPermission(String[] per, String content, boolean show_doNotAskAgain, Listener listener) { + protected void requestPermission(IPermission[] per, String content, boolean req_permission, Listener listener) { if (!TextUtils.isEmpty(content)) { this.content = content; } - requestPermission(per, content, true, show_doNotAskAgain, listener); - } - - protected void requestPermission(String[] per, String content, boolean req_permission, boolean show_doNotAskAgain, Listener listener) { - if (!TextUtils.isEmpty(content)) { - this.content = content; - } - requestPermission(per, req_permission, show_doNotAskAgain, listener); + requestPermission(per, req_permission, listener); } /** @@ -101,33 +89,25 @@ public abstract class BaseFragment extends Fragment { * * @param permission 权限集合 * @param req_permission 申请权限之前是否提示,默认false,不提示 - * @param show_doNotAskAgain 权限申请失败是否调整到设置页,默认false,不关闭 * @param listener 监听 */ - protected void requestPermission(String[] permission, boolean req_permission, boolean show_doNotAskAgain, Listener listener) { + protected void requestPermission(IPermission[] permission, boolean req_permission, Listener listener) { if (!req_permission) {//不弹窗直接申请权限 - requestPermission(permission, show_doNotAskAgain, listener); + requestPermission(permission, null ,listener); } else {//先弹窗,再去申请 new AuthDialog(getActivity(), REQUEST_PER, new AuthDialog.Listener() { @Override public void callBack() { //同意申请权限,去申请 - requestPermission(permission, show_doNotAskAgain, listener); + requestPermission(permission, null ,listener); } }).show(); } } - private void requestPermission(String[] permission, boolean show_doNotAskAgain, Listener listener) { - List iPermissionList = convertToIPermissionArray(permission); - for (int i = 0; i < iPermissionList.size(); i++) { - LogK.e("iPermissionList="+iPermissionList.get(i)); - } - if (iPermissionList.isEmpty()){ - return; - } + private void requestPermission(IPermission[] iPermissions, Object object, Listener listener) { XXPermissions.with(getActivity()) - .permissions(iPermissionList) + .permissions(iPermissions) .request(new OnPermissionCallback() { @Override public void onResult(@NonNull List grantedList, @NonNull List deniedList) { @@ -136,7 +116,7 @@ public abstract class BaseFragment extends Fragment { return; } listener.success(); - showGrantedPermissionsToast(requireActivity(),grantedList); + showGrantedPermissionsToast(requireActivity(), grantedList); } @@ -154,6 +134,11 @@ public abstract class BaseFragment extends Fragment { }); } + public static void showGrantedPermissionsToast(Context context, List grantedList) { + Toaster.show(String.format(context.getString(R.string.demo_obtain_permission_success_hint) + , PermissionConverter.getNickNamesByPermissions(context, grantedList))); + } + /******************************lifecycle area*****************************************/ @Nullable @Override diff --git a/BaseLibrary/src/main/java/com/tfq/library/permission/PermissionUtils.java b/BaseLibrary/src/main/java/com/tfq/library/permission/PermissionUtils.java index 8bee1f7..362e6e8 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/permission/PermissionUtils.java +++ b/BaseLibrary/src/main/java/com/tfq/library/permission/PermissionUtils.java @@ -1,73 +1,70 @@ -package com.tfq.library.permission; - -import android.content.Context; -import android.util.Log; - -import com.hjq.permissions.permission.base.IPermission; -import com.hjq.toast.Toaster; -import com.tfq.library.R; -import com.tfq.library.utils.LogK; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -public class PermissionUtils { - - public static IPermission invokeGetCachePermission(String permission) { - try { - // 修正1: 使用正确的类名 PermissionUtils - Class permissionUtilsClass = Class.forName("com.hjq.permissions.permission.PermissionLists"); - // 修正2: 方法只需要一个String参数 - Method method = permissionUtilsClass.getDeclaredMethod("getCachePermission", String.class); - // 设置可访问(因为方法是private的) - method.setAccessible(true); - // 修正3: 调用时传入null(静态方法)和permission参数 - Object result = method.invoke(null, permission); - // 处理返回值 - if (result instanceof IPermission) { - LogK.e("0000000000000"); - return (IPermission) result; - } - LogK.e("1111111111111111"); - return null; - } catch (ClassNotFoundException e) { - Log.e("Reflection", "PermissionUtils class not found", e); - } catch (NoSuchMethodException e) { - Log.e("Reflection", "getCachePermission method not found", e); - } catch (IllegalAccessException e) { - Log.e("Reflection", "Illegal access to method", e); - } catch (InvocationTargetException e) { - Log.e("Reflection", "Method invocation failed", e); - } catch (Exception e) { - Log.e("Reflection", "Unexpected error", e); - } - return null; - } - - public static List convertToIPermissionArray(String[] permissions) { - // 将String[]转换为List - List permissionList = new ArrayList<>(); - - if (permissions == null || permissions.length == 0) { - return permissionList; - } - for (int i = 0; i < permissions.length; i++) { - String permission = permissions[i]; - LogK.e("permission="+permission); - // 1. 尝试通过反射获取缓存的IPermission - IPermission cachedPermission = invokeGetCachePermission(permission); - if (cachedPermission != null) { - permissionList.add(cachedPermission); - } - } - return permissionList; - } - - - public static void showGrantedPermissionsToast(Context context, List grantedList) { - Toaster.show(String.format(context.getString(R.string.demo_obtain_permission_success_hint) - , PermissionConverter.getNickNamesByPermissions(context, grantedList))); - } -} +//package com.tfq.library.permission; +// +//import android.content.Context; +//import android.util.Log; +// +//import com.hjq.permissions.permission.base.IPermission; +//import com.hjq.toast.Toaster; +//import com.tfq.library.R; +//import com.tfq.library.utils.LogK; +// +//import java.lang.reflect.InvocationTargetException; +//import java.lang.reflect.Method; +//import java.util.ArrayList; +//import java.util.List; +// +//public class PermissionUtils { +// +// public static IPermission invokeGetCachePermission(String permission) { +// try { +// // 修正1: 使用正确的类名 PermissionLists +// Class permissionUtilsClass = Class.forName("com.hjq.permissions.permission.PermissionLists"); +// // 修正2: 方法只需要一个String参数 +// Method method = permissionUtilsClass.getDeclaredMethod("getCachePermission", String.class); +// // 设置可访问(因为方法是private的) +// method.setAccessible(true); +// // 修正3: 调用时传入null(静态方法)和permission参数 +// Object result = method.invoke(null, permission); +// // 处理返回值 +// if (result instanceof IPermission) { +// return (IPermission) result; +// } +// return null; +// } catch (ClassNotFoundException e) { +// Log.e("Reflection", "PermissionUtils class not found", e); +// } catch (NoSuchMethodException e) { +// Log.e("Reflection", "getCachePermission method not found", e); +// } catch (IllegalAccessException e) { +// Log.e("Reflection", "Illegal access to method", e); +// } catch (InvocationTargetException e) { +// Log.e("Reflection", "Method invocation failed", e); +// } catch (Exception e) { +// Log.e("Reflection", "Unexpected error", e); +// } +// return null; +// } +// +// public static List convertToIPermissionArray(String[] permissions) { +// // 将String[]转换为List +// List permissionList = new ArrayList<>(); +// +// if (permissions == null || permissions.length == 0) { +// return permissionList; +// } +// for (int i = 0; i < permissions.length; i++) { +// String permission = permissions[i]; +// // 1. 尝试通过反射获取缓存的IPermission +// IPermission cachedPermission = invokeGetCachePermission(permission); +// if (cachedPermission != null) { +// permissionList.add(cachedPermission); +// } +// } +// return permissionList; +// } +// +// +// public static void showGrantedPermissionsToast(Context context, List grantedList) { +// Toaster.show(String.format(context.getString(R.string.demo_obtain_permission_success_hint) +// , PermissionConverter.getNickNamesByPermissions(context, grantedList))); +// } +//} diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java index 26a1fa9..7ee63a0 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_Font.java @@ -12,10 +12,9 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.hjq.permissions.XXPermissions; -import com.hjq.permissions.permission.base.IPermission; +import com.hjq.permissions.permission.PermissionLists; import com.tfq.demo.R; import com.tfq.library.base.BaseActivity; -import com.tfq.library.permission.PermissionUtils; import com.tfq.library.utils.LogK; import com.tfq.library.utils.ToasterUtil; @@ -82,9 +81,7 @@ public class Activity_Font extends BaseActivity { selectedScaleIndex(4); } - IPermission iPermission = PermissionUtils.invokeGetCachePermission(Manifest.permission.WRITE_SETTINGS); - assert iPermission != null; - boolean granted = XXPermissions.isGrantedPermission(this, iPermission); + boolean granted = XXPermissions.isGrantedPermission(this, PermissionLists.getWriteSettingsPermission()); if (!granted) { ll_perssion.setVisibility(View.VISIBLE); } @@ -96,9 +93,7 @@ public class Activity_Font extends BaseActivity { } private void onClick(View view) { - IPermission iPermission = PermissionUtils.invokeGetCachePermission(Manifest.permission.WRITE_SETTINGS); - assert iPermission != null; - boolean granted = XXPermissions.isGrantedPermission(this, iPermission); + boolean granted = XXPermissions.isGrantedPermission(this, PermissionLists.getWriteSettingsPermission()); int viewId = view.getId(); if (viewId == R.id.iv_back) { diff --git a/gradle.properties b/gradle.properties index def00ce..dc7307f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,4 +19,7 @@ android.useAndroidX=true android.enableJetifier=true useLocal=false -# useLocal=false # ???????????? +# useLocal=false # ??????????? + +# 指定Java 17的路径 +org.gradle.java.home=C:/Users/123/.jdks/ms-21.0.8 diff --git a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar index 8cc7aaf..5122cda 100644 Binary files a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar and b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar differ diff --git a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.md5 b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.md5 index b801021..1db753a 100644 --- a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.md5 +++ b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.md5 @@ -1 +1 @@ -304826bd11e9614142ecd6345b5a6680 \ No newline at end of file +8484d44231bc0a42d661517b25bcf324 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha1 b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha1 index f9c709a..deb0384 100644 --- a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha1 +++ b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha1 @@ -1 +1 @@ -0696947ead6e87bacf305f13922505aa927c0932 \ No newline at end of file +cbb875fe2eed61f4175f5d06b03701b69e6b0ab9 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha256 b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha256 index d918402..1629d81 100644 --- a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha256 +++ b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha256 @@ -1 +1 @@ -36f3d8b6a99ff5b00a62b0dc0d87b1100a8425c3b3385446998fe7cfe93ac6d1 \ No newline at end of file +2115630d449cbe8977ce7d33a093b5e7c0d5342574e78ef4a721a4de41a22a5b \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha512 b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha512 index 02a5826..b190611 100644 --- a/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha512 +++ b/maven/com/chuangketie/jk/lib_base/1.0.1/lib_base-1.0.1.aar.sha512 @@ -1 +1 @@ -4a4c5bb3f49e44b95fc07bee60b9088c295a319b0bf2d868761d11a7d7068c1b6e45c7fc51ed34edbfccb1e43070b0675758f0ad8093f4d824fdf01753b35501 \ No newline at end of file +aff9f0a6f957794a8551d622e37b202256d5e24ed3ee14c3be8c500461dc4b2f456dadc7235b83938ed40431413a8e438ed9becc76f39624cf9f9005a16507ec \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml index 517e6b1..51cb8d1 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml @@ -9,6 +9,6 @@ 1.0.0 1.0.1 - 20251120080338 + 20251120082435 diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 index 745cf80..8b4abb3 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.md5 @@ -1 +1 @@ -2e9274ee9bfe3ae9684d844f3f5e4f39 \ No newline at end of file +c0eb4b622c9b34b5ed5b2a7f35607749 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 index 8cd47d0..35dd7bf 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha1 @@ -1 +1 @@ -383ccc9dc24b76213b99acadc58e972486e84339 \ No newline at end of file +5f09b653ebd212a50527b8f7c0090da8a08d53db \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 index c1d7d0b..51a0e0e 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha256 @@ -1 +1 @@ -8cda9377a8fd92e350167b3a6bf85354a2ff3aa3673c09cd522d8f5555eccd9d \ No newline at end of file +9832aa356914d02dbfb6fb17707e35b8907ee1b732decb2e084d6b6ac1fae916 \ No newline at end of file diff --git a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 index e4bf7a6..2688e6c 100644 --- a/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 +++ b/maven/com/chuangketie/jk/lib_base/maven-metadata.xml.sha512 @@ -1 +1 @@ -e52c69c4171259a8989e2ed833809b696eae3ed2789d5792995592b64d684ba4949ca67d4af3649d00e44770c0b32ed69f60bdd8644e153fc1879419787c891c \ No newline at end of file +c6644c0c74578920dbcabc210653858b599728a5fafcfc8d6aa6aa434e7fa1df9091648b8bf625e142acc0ce9ddfc059188c3f81fc683cb4007a604c8592429b \ No newline at end of file