1、修正隐私合规和权限清理
This commit is contained in:
shenzuqiang 2026-03-24 17:57:27 +08:00
parent cd7f326b55
commit 1bcef7f347
5 changed files with 57 additions and 25 deletions

View File

@ -4,10 +4,10 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2026-03-13T03:47:40.083936900Z"> <DropdownSelection timestamp="2026-03-24T05:48:19.296324800Z">
<Target type="DEFAULT_BOOT"> <Target type="DEFAULT_BOOT">
<handle> <handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=Y5DELZR46DZTCI9D" /> <DeviceId pluginId="PhysicalDevice" identifier="serial=JRBI89BIE6AI5TG6" />
</handle> </handle>
</Target> </Target>
</DropdownSelection> </DropdownSelection>

View File

@ -98,6 +98,11 @@ android {
create("huawei") { dimension = "channel" } create("huawei") { dimension = "channel" }
create("oppo") { dimension = "channel" } create("oppo") { dimension = "channel" }
create("vivo") { dimension = "channel" } create("vivo") { dimension = "channel" }
create("honor") { dimension = "channel" }
create("ks_tg") { dimension = "channel" }
create("bd_tg") { dimension = "channel" }
create("yyb") { dimension = "channel" }
create("baidu") { dimension = "channel" }
// 自动将渠道名同步给个推和友盟的渠道占位符 // 自动将渠道名同步给个推和友盟的渠道占位符
all { all {

View File

@ -30,7 +30,6 @@
<!--开关wifi状态解决国内机型移动网络权限问题需要--> <!--开关wifi状态解决国内机型移动网络权限问题需要-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--Unimp要求--> <!--Unimp要求-->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<!-- 安装应用权限 --> <!-- 安装应用权限 -->

View File

@ -1,6 +1,9 @@
package com.img.rabbit package com.img.rabbit
import android.app.ActivityManager
import android.app.Application import android.app.Application
import android.content.Context
import android.os.Build
import android.util.Log import android.util.Log
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.img.rabbit.utils.NetworkMonitor import com.img.rabbit.utils.NetworkMonitor
@ -27,32 +30,44 @@ class BaseApplication : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
// 只有是主进程时,才执行重量级初始化
if (getProcessName(this) == packageName) {
Log.i(TAG, "进行必要的SDK初始化...")
// 初始化MMKV
initMMKV()
// 非小程序进程使用unimp 关键字 可以根据宿主的具体情况进行调整) // 非小程序进程使用unimp 关键字 可以根据宿主的具体情况进行调整)
if (!RuningAcitvityUtil.getAppName(baseContext).contains("unimp")) { if (PreferenceUtil.getAgreement() && !RuningAcitvityUtil.getAppName(baseContext).contains("unimp")) {
Log.i(TAG, "已同意隐私政策BaseApplication开始初始化SDK服务...")
initThirdParty()
initUM()
}
}
}
override fun attachBaseContext(base: Context?) {
//MultiDex.install(base)
super.attachBaseContext(base)
}
/**
* 隐私同意即可初始化
*/
fun initThirdParty(){
//需要在隐私框架下才能处理的逻辑
if(PreferenceUtil.getAgreement()){
Log.i(TAG, "用户已同意隐私政策,开始初始化第三方服务")
// 初始化网络状态监控 // 初始化网络状态监控
NetworkMonitor.initialize(this) NetworkMonitor.initialize(this)
//初始化Glide //初始化Glide
Glide.get(this) Glide.get(this)
// 初始化MMKV
initMMKV()
// 初始化个推SDK // 初始化个推SDK
initGeTuiOneKeyLogin() initGeTuiOneKeyLogin()
// 初始化OAID和uni-app SDK // 初始化OAID和uni-app SDK
initOAIDAndUniAPPSdk() initOAIDAndUniAPPSdk()
//需要在隐私框架下才能处理的逻辑
if(PreferenceUtil.getAgreement()){
//用户已同意隐私政策
// 初始化友盟(每次启动时检查协议是否同意,如同意进行初始化)
initUM()
} }
}
}
override fun attachBaseContext(base: android.content.Context?) {
//MultiDex.install(base)
super.attachBaseContext(base)
} }
/** /**
@ -77,26 +92,22 @@ class BaseApplication : Application() {
} }
private fun initMMKV() { private fun initMMKV() {
val rootDir = MMKV.initialize(this) MMKV.initialize(this)
Log.i(TAG, "MMKV root dir: $rootDir")
} }
private fun initOAIDAndUniAPPSdk() { private fun initOAIDAndUniAPPSdk() {
if(PreferenceUtil.getOAID().isNullOrEmpty()){ if(PreferenceUtil.getOAID().isNullOrEmpty()){
DeviceID.getOAID(this, object : IGetter{ DeviceID.getOAID(this, object : IGetter{
override fun onOAIDGetComplete(result: String?) { override fun onOAIDGetComplete(result: String?) {
Log.i(TAG, "获取OAID成功OAID: $result 开始记录OAID并初始化Uni-app SDK----->")
PreferenceUtil.saveOAID(result) PreferenceUtil.saveOAID(result)
initUniAPPSdk() initUniAPPSdk()
} }
override fun onOAIDGetError(error: Exception?) { override fun onOAIDGetError(error: Exception?) {
Log.i(TAG, "获取OAID失败开始初始化Uni-app SDK----->")
initUniAPPSdk() initUniAPPSdk()
} }
}) })
}else{ }else{
Log.i(TAG, "已识别到OAID开始初始化Uni-app SDK----->")
initUniAPPSdk() initUniAPPSdk()
} }
} }
@ -124,4 +135,20 @@ class BaseApplication : Application() {
} }
} }
private fun getProcessName(context: Context): String? {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
return getProcessName()
}
val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val runningApps = am.runningAppProcesses ?: return null
for (proInfo in runningApps) {
if (proInfo.pid == android.os.Process.myPid()) {
return proInfo.processName
}
}
return null
}
} }

View File

@ -281,6 +281,7 @@ class MainActivity : ComponentActivity(), LoadingCallback {
if (isAllowPrivacyPolicy) { if (isAllowPrivacyPolicy) {
generalViewModel.setIsAgreement(true) generalViewModel.setIsAgreement(true)
loginViewModel.setIsPolicyAgreement(true) loginViewModel.setIsPolicyAgreement(true)
(applicationContext as BaseApplication).initThirdParty()
initUM() initUM()
showSplash = true showSplash = true
} else { } else {