应用模式切换功能完成。

This commit is contained in:
ZhanGSKen
2025-11-13 08:44:34 +08:00
parent 80a83cba4c
commit 1896b72469
12 changed files with 45 additions and 66 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Wed Nov 12 23:59:20 GMT 2025
#Thu Nov 13 00:41:27 GMT 2025
stageCount=0
libraryProject=
baseVersion=15.11
publishVersion=15.11.0
buildCount=6
buildCount=14
baseBetaVersion=15.11.1

View File

@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">悟空笔记#</string>
<string name="appplus_name">老君到說#</string>
</resources>

View File

@@ -2,5 +2,6 @@
<resources>
<string name="app_name">Positions</string>
<string name="appplus_name">PositionsPlus+</string>
</resources>

View File

@@ -9,7 +9,7 @@
android:shortcutLongLabel="@string/open_appplus"
android:shortcutDisabledMessage="@string/appplus_open_disabled">
<intent
android:action="cc.winboll.studio.positions.MainActivity"
android:action="cc.winboll.studio.positions.MainActivity.ACTION_OPEN_APPPLUS"
android:targetPackage="cc.winboll.studio.positions.beta"
android:targetClass="cc.winboll.studio.positions.MainActivity"
android:data="open_appplus" />

View File

@@ -9,9 +9,9 @@
android:shortcutLongLabel="@string/close_appplus"
android:shortcutDisabledMessage="@string/appplus_close_disabled">
<intent
android:action="cc.winboll.studio.positions.PlusActivity.ACTION_CLOSE_APPPLUS"
android:action="cc.winboll.studio.positions.MainActivity.ACTION_CLOSE_APPPLUS"
android:targetPackage="cc.winboll.studio.positions.beta"
android:targetClass="cc.winboll.studio.positions.PlusActivity"
android:targetClass="cc.winboll.studio.positions.MainActivity"
android:data="close_appplus" />
<categories android:name="android.shortcut.conversation" />

View File

@@ -60,7 +60,7 @@
android:targetActivity=".MainActivity"
android:exported="true"
android:label="@string/appplus_name"
android:icon="@mipmap/ic_launcher"
android:icon="@drawable/ic_positions_plus"
android:enabled="false">
<intent-filter>

View File

@@ -22,7 +22,7 @@ import cc.winboll.studio.positions.activities.LocationActivity;
import cc.winboll.studio.positions.activities.WinBoLLActivity;
import cc.winboll.studio.positions.utils.AppConfigsUtil;
import cc.winboll.studio.positions.utils.ServiceUtil;
import cc.winboll.studio.positions.utils.AppIconUtils;
import cc.winboll.studio.positions.utils.APPPlusUtils;
/**
* 主页面:仅负责
@@ -32,6 +32,10 @@ import cc.winboll.studio.positions.utils.AppIconUtils;
*/
public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "MainActivity";
public static final String COMPONENT_WUKONG = "cc.winboll.studio.positions.MainActivityWukong";
public static final String COMPONENT_LAOJUN = "cc.winboll.studio.positions.MainActivityLaojun";
public static final String ACTION_OPEN_APPPLUS = "cc.winboll.studio.positions.MainActivity.ACTION_OPEN_APPPLUS";
public static final String ACTION_CLOSE_APPPLUS = "cc.winboll.studio.positions.MainActivity.ACTION_CLOSE_APPPLUS";
// 权限请求码(建议定义为类常量,避免魔法值)
private static final int REQUEST_LOCATION_PERMISSIONS = 1001;
private static final int REQUEST_BACKGROUND_LOCATION_PERMISSION = 1002;
@@ -106,9 +110,15 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
*/
private void handleSwitchRequest() {
Intent intent = getIntent();
if (intent != null && "open_app_plus".equals(intent.getDataString())) {
if (intent != null && "open_appplus".equals(intent.getDataString())) {
ToastUtils.show("已添加" + getString(R.string.app_name) + "附加组件");
AppIconUtils.addPlusIcon(this);
APPPlusUtils.openAPPPlus(this);
moveTaskToBack(true);
}
if (intent != null && "close_appplus".equals(intent.getDataString())) {
ToastUtils.show("已移除" + getString(R.string.app_name) + "附加组件");
APPPlusUtils.closeAPPPlus(this);
moveTaskToBack(true);
}
}

View File

@@ -1,36 +0,0 @@
package cc.winboll.studio.positions.activities;
import android.content.Intent;
import android.os.Bundle;
import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.positions.MainActivity;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.positions.utils.AppIconUtils;
/**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
* @Date 2025/11/10 18:17
*/
public class PlusActivity extends MainActivity {
public static final String TAG = "PlusActivity";
public static final String ACTION_HIDE_APP_PLUS = "cc.winboll.studio.positions.PlusActivity.ACTION_HIDE_APP_PLUS";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleSwitchRequest();
}
/**
* 处理应用图标快捷菜单的请求
*/
private void handleSwitchRequest() {
Intent intent = getIntent();
if (intent != null && "hide_app_plus".equals(intent.getDataString())) {
ToastUtils.show("已移除" + getString(R.string.app_name) + "附加组件");
AppIconUtils.addPlusIcon(this);
}
}
}

View File

@@ -10,14 +10,12 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
import android.widget.Toast;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.positions.activities.PlusActivity;
import cc.winboll.studio.positions.MainActivity;
public class AppIconUtils {
public static final String TAG = "AppIconUtils";
public class APPPlusUtils {
public static final String TAG = "APPPlusUtils";
// 快捷方式配置名称+图标需与实际资源匹配
// private static final String PLUS_SHORTCUT_NAME = "位置服务-Laojun";
@@ -26,7 +24,7 @@ public class AppIconUtils {
/**
* 添加Plus组件与图标
*/
public static boolean addPlusIcon(Context context) {
public static boolean openAPPPlus(Context context) {
if (context == null) {
LogUtils.d(TAG, "切换失败:上下文为空");
Toast.makeText(context, "图标切换失败", Toast.LENGTH_SHORT).show();
@@ -34,10 +32,12 @@ public class AppIconUtils {
}
PackageManager pm = context.getPackageManager();
ComponentName plusComponent = new ComponentName(context, PlusActivity.ACTION_HIDE_APP_PLUS);
ComponentName plusComponentLaojun = new ComponentName(context, MainActivity.COMPONENT_LAOJUN);
ComponentName plusComponentWuKong = new ComponentName(context, MainActivity.COMPONENT_WUKONG);
try {
enableComponent(pm, plusComponent);
disableComponent(pm, plusComponentWuKong);
enableComponent(pm, plusComponentLaojun);
// 2. 创建 Laojun 组件对应的快捷方式自动去重
// boolean shortcutCreated = createComponentShortcut(context, plusComponent, PLUS_SHORTCUT_NAME, PLUS_SHORTCUT_ICON);
@@ -62,12 +62,12 @@ public class AppIconUtils {
return false;
}
}
/**
* 移除Plus组件
*/
public static boolean removePlusIcon(Context context) {
public static boolean closeAPPPlus(Context context) {
if (context == null) {
LogUtils.d(TAG, "切换失败:上下文为空");
Toast.makeText(context, "图标切换失败", Toast.LENGTH_SHORT).show();
@@ -75,15 +75,13 @@ public class AppIconUtils {
}
PackageManager pm = context.getPackageManager();
ComponentName plusComponent = new ComponentName(context, PlusActivity.ACTION_HIDE_APP_PLUS);
ComponentName plusComponentLaojun = new ComponentName(context, MainActivity.COMPONENT_LAOJUN);
ComponentName plusComponentWuKong = new ComponentName(context, MainActivity.COMPONENT_WUKONG);
disableComponent(pm, plusComponentLaojun);
enableComponent(pm, plusComponentWuKong);
try {
disableComponent(pm, plusComponent);
return true;
} catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
return false;
}
return true;
}
/**

View File

@@ -1,4 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">悟空笔记</string>
<string name="appplus_name">老君到說</string>
<string name="open_appplus">开疆扩土</string>
<string name="close_appplus">返璞归真</string>
<string name="appplus_open_disabled">余力不足</string>
<string name="appplus_close_disabled">辎重难返</string>
</resources>

View File

@@ -9,7 +9,7 @@
android:shortcutLongLabel="@string/open_appplus"
android:shortcutDisabledMessage="@string/appplus_open_disabled">
<intent
android:action="cc.winboll.studio.positions.MainActivity"
android:action="cc.winboll.studio.positions.MainActivity.ACTION_OPEN_APPPLUS"
android:targetPackage="cc.winboll.studio.positions"
android:targetClass="cc.winboll.studio.positions.MainActivity"
android:data="open_appplus" />

View File

@@ -9,9 +9,9 @@
android:shortcutLongLabel="@string/close_appplus"
android:shortcutDisabledMessage="@string/appplus_close_disabled">
<intent
android:action="cc.winboll.studio.positions.PlusActivity.ACTION_HIDE_APP_PLUS"
android:action="cc.winboll.studio.positions.MainActivity.ACTIO_CLOSE_APPPLUS"
android:targetPackage="cc.winboll.studio.positions"
android:targetClass="cc.winboll.studio.positions.PlusActivity"
android:targetClass="cc.winboll.studio.positions.MainActivity"
android:data="close_appplus" />
<categories android:name="android.shortcut.conversation" />