fix:修复 google 上架被拒问题:获取已安装应用列表,修复华为被拒问题:同意协议前获取设备信息
This commit is contained in:
parent
57a39ee3b6
commit
27ef3cdbb3
@ -1,115 +1,145 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.star_lock">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation"/>
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
|
package="com.example.star_lock">
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
|
||||||
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />-->
|
|
||||||
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />-->
|
|
||||||
<!--允许访问网络,必选权限-->
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
<!--允许获取精确位置,精准定位必选-->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
|
||||||
<!--允许获取粗略位置,粗略定位必选-->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
|
||||||
<!--允许获取设备和运营商信息,用于问题排查和网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
|
|
||||||
<!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
|
||||||
<!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
|
||||||
<!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
|
|
||||||
<!--允许写设备缓存,用于问题排查-->
|
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
|
|
||||||
<!--允许读设备日志,用于问题排查-->
|
|
||||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
|
||||||
|
|
||||||
<!--相机-->
|
<uses-permission
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
android:name="android.permission.BLUETOOTH_SCAN"
|
||||||
|
android:usesPermissionFlags="neverForLocation" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />-->
|
||||||
|
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />-->
|
||||||
|
<!--允许访问网络,必选权限-->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<!--允许获取精确位置,精准定位必选-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
|
<!--允许获取粗略位置,粗略定位必选-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
<!--允许获取设备和运营商信息,用于问题排查和网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
|
||||||
|
<!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
|
<!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<!--允许写设备缓存,用于问题排查-->
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
|
<!--允许读设备日志,用于问题排查-->
|
||||||
|
<uses-permission android:name="android.permission.READ_LOGS" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
<!--相机-->
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
|
||||||
|
|
||||||
<!--允许麦克风权限,用于录音发送-->
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
|
||||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
|
||||||
<uses-permission android:name="android.permission.REORDER_TASKS"/>
|
|
||||||
|
|
||||||
<!-- 相册权限 34适配 -->
|
<!--允许麦克风权限,用于录音发送-->
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
||||||
|
|
||||||
|
<!-- 相册权限 34适配 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
|
||||||
|
|
||||||
<application android:usesCleartextTraffic="true" android:label="@string/app_name" android:name="android.app.Application" android:icon="@mipmap/ic_launcher">
|
<!-- 移除 QUERY_ALL_PACKAGES 权限 -->
|
||||||
<meta-data
|
<uses-permission
|
||||||
android:name="flutterEmbedding"
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||||
android:value="2" />
|
tools:node="remove" />
|
||||||
<meta-data
|
|
||||||
android:name="com.google.firebase.messaging.default_notification_channel_id"
|
<application
|
||||||
android:value="1"/> <!-- 将您的通知渠道ID替换为您的实际ID -->
|
android:name="android.app.Application"
|
||||||
<meta-data
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:usesCleartextTraffic="true">
|
||||||
|
<meta-data
|
||||||
|
android:name="flutterEmbedding"
|
||||||
|
android:value="2" />
|
||||||
|
<meta-data
|
||||||
|
android:name="com.google.firebase.messaging.default_notification_channel_id"
|
||||||
|
android:value="1" /> <!-- 将您的通知渠道ID替换为您的实际ID -->
|
||||||
|
<meta-data
|
||||||
android:name="com.huawei.hms.client.appid"
|
android:name="com.huawei.hms.client.appid"
|
||||||
android:value="110798531"/>
|
android:value="110798531" />
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.huawei.hms.client.cpid"
|
android:name="com.huawei.hms.client.cpid"
|
||||||
android:value="1406555529261648640"/>
|
android:value="1406555529261648640" />
|
||||||
<meta-data android:name="OPPO_APPKEY"
|
<meta-data
|
||||||
android:value="OP-47f668c9943248118502aa58d066393b" />
|
android:name="OPPO_APPKEY"
|
||||||
|
android:value="OP-47f668c9943248118502aa58d066393b" />
|
||||||
|
|
||||||
<meta-data android:name="OPPO_APPID"
|
<meta-data
|
||||||
|
android:name="OPPO_APPID"
|
||||||
android:value="OP-31726001" />
|
android:value="OP-31726001" />
|
||||||
|
|
||||||
<meta-data android:name="OPPO_APPSECRET"
|
<meta-data
|
||||||
|
android:name="OPPO_APPSECRET"
|
||||||
android:value="OP-05723986bba64183a71530b496922450" />
|
android:value="OP-05723986bba64183a71530b496922450" />
|
||||||
<!-- 配置定位Service -->
|
<!-- 配置定位Service -->
|
||||||
<service android:name="com.amap.api.location.APSService"/>
|
<service android:name="com.amap.api.location.APSService" />
|
||||||
<!-- since JPushv3.6.8 ,oppov2.1.0 oppo 核心功能-->
|
<!-- since JPushv3.6.8 ,oppov2.1.0 oppo 核心功能-->
|
||||||
<service android:name="cn.jpush.android.service.PluginOppoPushService"
|
<service
|
||||||
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE"
|
android:name="cn.jpush.android.service.PluginOppoPushService"
|
||||||
android:exported="true">
|
android:exported="true"
|
||||||
<intent-filter>
|
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE">
|
||||||
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE" />
|
<intent-filter>
|
||||||
</intent-filter>
|
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE" />
|
||||||
</service>
|
</intent-filter>
|
||||||
|
</service>
|
||||||
|
|
||||||
<!-- since JPushv3.6.8 ,oppov2.1.0 oppo 核心功能-->
|
<!-- since JPushv3.6.8 ,oppov2.1.0 oppo 核心功能-->
|
||||||
<service
|
<service
|
||||||
android:name="com.heytap.msp.push.service.DataMessageCallbackService"
|
android:name="com.heytap.msp.push.service.DataMessageCallbackService"
|
||||||
android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE"
|
android:exported="true"
|
||||||
android:exported="true">
|
android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE">
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE"/>
|
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE" />
|
||||||
|
|
||||||
<action android:name="com.heytap.msp.push.RECEIVE_MCS_MESSAGE"/>
|
<action android:name="com.heytap.msp.push.RECEIVE_MCS_MESSAGE" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service> <!--兼容Q版本-->
|
</service> <!--兼容Q版本-->
|
||||||
<activity android:name="com.skychip.lock.MainActivity" android:exported="true" android:screenOrientation="portrait" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
|
<activity
|
||||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
android:name="com.skychip.lock.MainActivity"
|
||||||
the Android process has started. This theme is visible to the user
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
while the Flutter UI initializes. After that, this theme continues
|
android:exported="true"
|
||||||
to determine the Window background behind the Flutter UI. -->
|
android:hardwareAccelerated="true"
|
||||||
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme"/>
|
android:launchMode="singleTop"
|
||||||
<intent-filter>
|
android:screenOrientation="portrait"
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
android:theme="@style/LaunchTheme"
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
android:windowSoftInputMode="adjustResize">
|
||||||
</intent-filter>
|
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||||
<intent-filter>
|
the Android process has started. This theme is visible to the user
|
||||||
<action android:name="android.intent.action.VIEW" />
|
while the Flutter UI initializes. After that, this theme continues
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
to determine the Window background behind the Flutter UI. -->
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<meta-data
|
||||||
<data android:scheme="skysmartlock" />
|
android:name="io.flutter.embedding.android.NormalTheme"
|
||||||
</intent-filter>
|
android:resource="@style/NormalTheme" />
|
||||||
|
|
||||||
</activity>
|
<intent-filter>
|
||||||
</application>
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
|
||||||
|
<data android:scheme="skysmartlock" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@ -102,15 +102,14 @@ class StarLockLoginLogic extends BaseGetXController {
|
|||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
//刷新设备信息
|
||||||
void onReady() {
|
void flushedDeviceInfo(){
|
||||||
super.onReady();
|
|
||||||
|
|
||||||
XSConstantMacro().getDeviceInfoData().then((Map<String, dynamic> data) {
|
XSConstantMacro().getDeviceInfoData().then((Map<String, dynamic> data) {
|
||||||
state.deviceInfoMap.value = data;
|
state.deviceInfoMap.value = data;
|
||||||
}).catchError((error) {
|
}).catchError((dynamic error) {
|
||||||
// 适当处理错误
|
// 适当处理错误
|
||||||
AppLog.log('获取设备信息时出错: $error');
|
AppLog.log('获取设备信息时出错: $error');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import 'package:star_lock/app_settings/app_settings.dart';
|
|||||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||||
import 'package:star_lock/flavors.dart';
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/login/login/app_get_version.dart';
|
import 'package:star_lock/login/login/app_get_version.dart';
|
||||||
|
import 'package:star_lock/login/login/starLock_login_logic.dart';
|
||||||
import 'package:star_lock/main.dart';
|
import 'package:star_lock/main.dart';
|
||||||
import 'package:star_lock/network/api_repository.dart';
|
import 'package:star_lock/network/api_repository.dart';
|
||||||
import 'package:star_lock/tools/customer_tool.dart';
|
import 'package:star_lock/tools/customer_tool.dart';
|
||||||
@ -30,6 +31,9 @@ class AppFirstEnterHandle {
|
|||||||
}
|
}
|
||||||
getAppInfo();
|
getAppInfo();
|
||||||
await privacySDKInitialization();
|
await privacySDKInitialization();
|
||||||
|
if (Get.isRegistered<StarLockLoginLogic>()) {
|
||||||
|
Get.find<StarLockLoginLogic>().flushedDeviceInfo();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case isAgreePosition: // 位置权限
|
case isAgreePosition: // 位置权限
|
||||||
if (getFlag != isAgreePosition) {
|
if (getFlag != isAgreePosition) {
|
||||||
@ -87,10 +91,11 @@ class AppFirstEnterHandle {
|
|||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
// 处理用户协议点击事件
|
// 处理用户协议点击事件
|
||||||
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
|
Get.toNamed(Routers.webviewShowPage,
|
||||||
"url": XSConstantMacro.userAgreementURL,
|
arguments: <String, String>{
|
||||||
"title": '用户协议'.tr
|
"url": XSConstantMacro.userAgreementURL,
|
||||||
});
|
"title": '用户协议'.tr
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
TextSpan(text: '和'.tr),
|
TextSpan(text: '和'.tr),
|
||||||
@ -101,10 +106,11 @@ class AppFirstEnterHandle {
|
|||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
// 处理隐私政策点击事件
|
// 处理隐私政策点击事件
|
||||||
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
|
Get.toNamed(Routers.webviewShowPage,
|
||||||
"url": XSConstantMacro.privacyPolicyURL,
|
arguments: <String, String>{
|
||||||
"title": '隐私政策'.tr
|
"url": XSConstantMacro.privacyPolicyURL,
|
||||||
});
|
"title": '隐私政策'.tr
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
@ -154,10 +160,11 @@ class AppFirstEnterHandle {
|
|||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
// 处理用户协议点击事件
|
// 处理用户协议点击事件
|
||||||
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
|
Get.toNamed(Routers.webviewShowPage,
|
||||||
"url": XSConstantMacro.userAgreementURL,
|
arguments: <String, String>{
|
||||||
"title": '用户协议'.tr
|
"url": XSConstantMacro.userAgreementURL,
|
||||||
});
|
"title": '用户协议'.tr
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
TextSpan(text: '和'.tr),
|
TextSpan(text: '和'.tr),
|
||||||
@ -169,10 +176,11 @@ class AppFirstEnterHandle {
|
|||||||
recognizer: TapGestureRecognizer()
|
recognizer: TapGestureRecognizer()
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
// 处理隐私政策点击事件
|
// 处理隐私政策点击事件
|
||||||
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
|
Get.toNamed(Routers.webviewShowPage,
|
||||||
"url": XSConstantMacro.privacyPolicyURL,
|
arguments: <String, String>{
|
||||||
"title": '隐私政策'.tr
|
"url": XSConstantMacro.privacyPolicyURL,
|
||||||
});
|
"title": '隐私政策'.tr
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user