删除打包后带入的本地目录和切换图标功能
@@ -1,6 +1,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.xvproject">
|
||||
package="com.hgdj.app">
|
||||
|
||||
<!-- release 包只用 main manifest,INTERNET 必须在这里声明;
|
||||
否则 release 无网络权限,启动选线 host lookup errno=7,弹"线路检测失败" -->
|
||||
@@ -36,256 +36,6 @@
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity-alias
|
||||
android:name=".lld"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="黄果短剧"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".aiyinyue"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="爱音乐"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_1"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
|
||||
<activity-alias
|
||||
android:name=".aiyuedu"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="爱阅读"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_2"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".alipay"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="支付宝"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_3"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".bilibili"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="哔哩哔哩"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_4"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".binggandazhuozhan"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="金铲铲之战"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_5"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".meisijiejian"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="美食借鉴"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_6"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".myworld"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="我的世界"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_7"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
|
||||
<activity-alias
|
||||
android:name=".shenxuanzhizhan"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="神选之战"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_8"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
|
||||
<activity-alias
|
||||
android:name=".shuixinwuxian"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="随心无线"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_9"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
|
||||
<activity-alias
|
||||
android:name=".texuanxiaoshuo"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="特轩小说"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_10"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".tiantianmajiang"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="天天麻将"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_11"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".tuyou"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="途游"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_12"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".weichat"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="微信"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_13"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".wendao"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="问道"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_14"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".yinyutusujiao"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="英语图书角"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_15"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".icon_16"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="91PO黄果短剧RN"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_16"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".icon_17"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="黄果短剧"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_17"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<activity-alias
|
||||
android:name=".icon_18"
|
||||
android:targetActivity=".MainActivity"
|
||||
android:label="黄果短剧"
|
||||
android:enabled="false"
|
||||
android:icon="@mipmap/icon_18"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.xvproject
|
||||
package com.hgdj.app
|
||||
|
||||
import io.flutter.app.FlutterApplication
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.hgdj.app
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugins.JPNativePlugin
|
||||
|
||||
class MainActivity : FlutterActivity() {
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
JPNativePlugin.registerWith(this, flutterEngine)
|
||||
}
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
package com.xvproject
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.ActivityManager
|
||||
import android.content.ComponentName
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import io.flutter.plugins.JPNativePlugin
|
||||
|
||||
class MainActivity : FlutterActivity() {
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
JPNativePlugin.registerWith(this, flutterEngine)
|
||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
|
||||
.setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
METHOD_CHANGE_ICON -> {
|
||||
val index = call.argument<Int>(ARG_ICON_INDEX) ?: -1
|
||||
ICON_ALIASES.getOrNull(index)?.let { switchIcon("$ALIAS_PACKAGE.$it") }
|
||||
result.success(true)
|
||||
}
|
||||
// 不回 result 的话 Dart 那边的 Future 永远不完成
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 切换启动图标:禁用当前入口 + 启用目标 alias,再杀掉桌面进程让图标立刻刷新
|
||||
private fun switchIcon(alias: String) {
|
||||
val pm = packageManager
|
||||
pm.setComponentEnabledSetting(
|
||||
componentName,
|
||||
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP
|
||||
)
|
||||
pm.setComponentEnabledSetting(
|
||||
ComponentName(this, alias),
|
||||
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP
|
||||
)
|
||||
restartLauncher(pm)
|
||||
}
|
||||
|
||||
/// 杀掉桌面进程,强制它重读图标
|
||||
@SuppressLint("ServiceCast")
|
||||
private fun restartLauncher(pm: PackageManager) {
|
||||
val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
|
||||
val intent = Intent(Intent.ACTION_MAIN)
|
||||
.addCategory(Intent.CATEGORY_HOME)
|
||||
.addCategory(Intent.CATEGORY_DEFAULT)
|
||||
for (info in pm.queryIntentActivities(intent, 0)) {
|
||||
am.killBackgroundProcesses(info.activityInfo?.packageName ?: continue)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
//这个跟flutter的通道名称保持一致
|
||||
private const val CHANNEL = "com.yinse/request"
|
||||
|
||||
private const val METHOD_CHANGE_ICON = "changeIcon"
|
||||
private const val ARG_ICON_INDEX = "iconIndex"
|
||||
|
||||
/// 图标 alias 所在包名:AndroidManifest 里 activity-alias 写的是相对名(manifest package=com.xvproject),
|
||||
/// 与 applicationId 不同,不能用 packageName 拼
|
||||
private const val ALIAS_PACKAGE = "com.xvproject"
|
||||
|
||||
/// 下标即 Flutter 传来的 iconIndex,顺序必须与 manifest 里 activity-alias 的声明顺序一致
|
||||
private val ICON_ALIASES = listOf(
|
||||
"lld", "aiyinyue", "aiyuedu", "alipay", "bilibili", "binggandazhuozhan",
|
||||
"meisijiejian", "myworld", "shenxuanzhizhan", "shuixinwuxian", "texuanxiaoshuo",
|
||||
"tiantianmajiang", "tuyou", "weichat", "wendao", "yinyutusujiao",
|
||||
"icon_16", "icon_17", "icon_18", //清明 / 端午 / 劳动
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |