|
@@ -265,9 +265,159 @@ function checkSystemEnableLocation() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+//获取安卓手机权限
|
|
|
+function requestAndroidPermissions() {
|
|
|
+ const locationPermission=checkLocationPermission()
|
|
|
+ const optimizationStatus=checkBatteryOptimizationStatus()
|
|
|
+ // const runningPermission=checkBackgroundRunningPermission()
|
|
|
+ // const lockStatus=checkAppLockStatus()
|
|
|
+ const permissionArr=[
|
|
|
+ {type: 'location',state:locationPermission,title: ('位置权限'), desc: '打开手机定位,并运行APP始终使用'},
|
|
|
+ {type: 'battery',state:optimizationStatus,title: ('电池优化'), desc: '打开电池优化设置, 将弗兰克APP加入保护名单'},
|
|
|
+ // {type: 'appLock',state:lockStatus},
|
|
|
+ // {type: 'backstage',state:runningPermission},
|
|
|
+ // {type: 'appLock',state:lockStatus},
|
|
|
+ ]
|
|
|
+ return permissionArr
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function checkLocationPermission() {
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var PackageManager = plus.android.importClass("android.content.pm.PackageManager");
|
|
|
+
|
|
|
+ // 定义定位权限常量
|
|
|
+ var FINE_PERMISSION = "android.permission.ACCESS_FINE_LOCATION";
|
|
|
+ var COARSE_PERMISSION = "android.permission.ACCESS_COARSE_LOCATION";
|
|
|
+
|
|
|
+ // 检查精确和粗略定位权限状态
|
|
|
+ var hasFineLocation = main.checkSelfPermission(FINE_PERMISSION) === PackageManager.PERMISSION_GRANTED;
|
|
|
+ var hasCoarseLocation = main.checkSelfPermission(COARSE_PERMISSION) === PackageManager.PERMISSION_GRANTED;
|
|
|
+
|
|
|
+ if (hasFineLocation || hasCoarseLocation) {
|
|
|
+ console.log("✅ 定位权限已授予");
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ console.log("⚠️ 定位权限未授予");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function checkBatteryOptimizationStatus() {
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var Context = plus.android.importClass("android.content.Context");
|
|
|
+ var PowerManager = plus.android.importClass("android.os.PowerManager");
|
|
|
+
|
|
|
+ var powerManager = main.getSystemService(Context.POWER_SERVICE);
|
|
|
+ var packageName = main.getPackageName();
|
|
|
+
|
|
|
+ var isIgnoringBatteryOptimizations = powerManager.isIgnoringBatteryOptimizations(packageName);
|
|
|
+
|
|
|
+ if (isIgnoringBatteryOptimizations) {
|
|
|
+ console.log("✅ 应用已被白名单豁免,未受电池优化限制");
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ console.log("⚠️ 应用受电池优化限制");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function openBatteryOptimization() {
|
|
|
+ var Intent = plus.android.importClass("android.content.Intent");
|
|
|
+ var Settings = plus.android.importClass("android.provider.Settings");
|
|
|
+ var Uri = plus.android.importClass("android.net.Uri");
|
|
|
+
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
|
|
|
+ var uri = Uri.parse("package:" + main.getPackageName());
|
|
|
+ intent.setData(uri);
|
|
|
+ main.startActivity(intent);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function checkBackgroundRunningPermission() {
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var Context = plus.android.importClass("android.content.Context");
|
|
|
+ var ActivityManager = plus.android.importClass("android.app.ActivityManager");
|
|
|
+
|
|
|
+ var activityManager = main.getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ var runningAppProcesses = activityManager.getRunningAppProcesses();
|
|
|
+ console.log(runningAppProcesses,'runningAppProcesses');
|
|
|
+ var packageName = main.getPackageName();
|
|
|
+
|
|
|
+ if('size' in runningAppProcesses){
|
|
|
+ for (var i = 0; i < runningAppProcesses.size(); i++) {
|
|
|
+ var processInfo = runningAppProcesses.get(i);
|
|
|
+ if (processInfo.processName === packageName) {
|
|
|
+ console.log("✅ 应用正在后台运行");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ console.log("⚠️ 应用可能未开启后台运行权限");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function checkAppLockStatus() {
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var Context = plus.android.importClass("android.content.Context");
|
|
|
+ var AppOpsManager = plus.android.importClass("android.app.AppOpsManager");
|
|
|
+
|
|
|
+ var appOps = main.getSystemService(Context.APP_OPS_SERVICE);
|
|
|
+ var packageName = main.getPackageName();
|
|
|
+ var uid = plus.android.importClass("android.os.Process").myUid();
|
|
|
+
|
|
|
+ var mode = appOps.checkOpNoThrow("android:get_usage_stats", uid, packageName);
|
|
|
+ console.log(AppOpsManager.OPSTR_GET_USAGE_STATS ,mode,AppOpsManager.MODE_ALLOWED);
|
|
|
+ if (mode === AppOpsManager.MODE_ALLOWED) {
|
|
|
+ console.log("✅ 应用未被应用锁限制");
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ console.log("⚠️ 应用可能被应用锁限制");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+function openAppLockSettings() {
|
|
|
+ const brand = uni.getSystemInfoSync().brand.toLowerCase();
|
|
|
+ console.log(brand);
|
|
|
+ if (brand.includes("xiaomi")) {
|
|
|
+ plus.runtime.openURL("miui://securitycenter",(res)=>{
|
|
|
+ console.log(res,'test');
|
|
|
+ }); // 小米 - 安全中心
|
|
|
+ } else if (brand.includes("huawei")) {
|
|
|
+ plus.runtime.openURL("huawei://settings/security/ApplicationLock"); // 华为 - 应用锁
|
|
|
+ } else if (brand.includes("oppo")) {
|
|
|
+ plus.runtime.openURL("oppo://securecenter/appLock"); // OPPO
|
|
|
+ } else if (brand.includes("vivo")) {
|
|
|
+ plus.runtime.openURL("vivosec://AppLock"); // VIVO
|
|
|
+ } else {
|
|
|
+ openGeneralSettings(); // 其他品牌通用方法
|
|
|
+ }
|
|
|
+}
|
|
|
+function openGeneralSettings() {
|
|
|
+ var Intent = plus.android.importClass("android.content.Intent");
|
|
|
+ var Settings = plus.android.importClass("android.provider.Settings");
|
|
|
+
|
|
|
+ var main = plus.android.runtimeMainActivity();
|
|
|
+ var intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); // 安全设置
|
|
|
+ main.startActivity(intent);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
module.exports = {
|
|
|
judgeIosPermission: judgeIosPermission,
|
|
|
requestAndroidPermission: requestAndroidPermission,
|
|
|
checkSystemEnableLocation: checkSystemEnableLocation,
|
|
|
- gotoAppPermissionSetting: gotoAppPermissionSetting
|
|
|
+ gotoAppPermissionSetting: gotoAppPermissionSetting,
|
|
|
+ checkBatteryOptimizationStatus,
|
|
|
+ checkAppLockStatus,
|
|
|
+ openBatteryOptimization,
|
|
|
+ checkBackgroundRunningPermission,
|
|
|
+ requestAndroidPermissions,
|
|
|
+ openAppLockSettings,//前往打开应用锁
|
|
|
}
|