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>
<SelectionState runConfigName="app">
<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">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=Y5DELZR46DZTCI9D" />
<DeviceId pluginId="PhysicalDevice" identifier="serial=JRBI89BIE6AI5TG6" />
</handle>
</Target>
</DropdownSelection>

View File

@ -98,6 +98,11 @@ android {
create("huawei") { dimension = "channel" }
create("oppo") { 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 {

View File

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

View File

@ -1,6 +1,9 @@
package com.img.rabbit
import android.app.ActivityManager
import android.app.Application
import android.content.Context
import android.os.Build
import android.util.Log
import com.bumptech.glide.Glide
import com.img.rabbit.utils.NetworkMonitor
@ -27,32 +30,44 @@ class BaseApplication : Application() {
override fun onCreate() {
super.onCreate()
// 非小程序进程使用unimp 关键字 可以根据宿主的具体情况进行调整)
if (!RuningAcitvityUtil.getAppName(baseContext).contains("unimp")) {
// 只有是主进程时,才执行重量级初始化
if (getProcessName(this) == packageName) {
Log.i(TAG, "进行必要的SDK初始化...")
// 初始化MMKV
initMMKV()
// 非小程序进程使用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)
//初始化Glide
Glide.get(this)
// 初始化MMKV
initMMKV()
// 初始化个推SDK
initGeTuiOneKeyLogin()
// 初始化OAID和uni-app SDK
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() {
val rootDir = MMKV.initialize(this)
Log.i(TAG, "MMKV root dir: $rootDir")
MMKV.initialize(this)
}
private fun initOAIDAndUniAPPSdk() {
if(PreferenceUtil.getOAID().isNullOrEmpty()){
DeviceID.getOAID(this, object : IGetter{
override fun onOAIDGetComplete(result: String?) {
Log.i(TAG, "获取OAID成功OAID: $result 开始记录OAID并初始化Uni-app SDK----->")
PreferenceUtil.saveOAID(result)
initUniAPPSdk()
}
override fun onOAIDGetError(error: Exception?) {
Log.i(TAG, "获取OAID失败开始初始化Uni-app SDK----->")
initUniAPPSdk()
}
})
}else{
Log.i(TAG, "已识别到OAID开始初始化Uni-app SDK----->")
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) {
generalViewModel.setIsAgreement(true)
loginViewModel.setIsPolicyAgreement(true)
(applicationContext as BaseApplication).initThirdParty()
initUM()
showSplash = true
} else {