【Android】隐藏app图标以及隐式启动其他APP

本文介绍如何在Android应用中隐藏桌面图标,并通过另一个应用进行隐式启动的方法。主要步骤包括在AndroidManifest.xml文件中配置隐式启动的data标签,并在需要启动目标Activity的应用中设置相应的Intent。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.隐藏APP桌面图标

在启动的activity的AndroidManifest注册中,添加隐式启动的data:

<data android:host="TestActivity" android:scheme="cn.fly2think.activity" />

在入口Activity处添加申明

<data android:host="TestActivity" android:scheme="cn.fly2think.activity"
                    tools:ignore="AppLinkUrlError" />

添加完成的效果如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.fly2think.yiilock"
    android:versionCode="18"
    android:versionName="1.8" >

    <uses-sdk
        android:minSdkVersion="5"
        android:targetSdkVersion="22" />

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <data android:host="TestActivity" android:scheme="cn.fly2think.activity" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="cn.fly2think.activity.TestActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <data android:host="TestActivity" android:scheme="cn.fly2think.activity"
                    tools:ignore="AppLinkUrlError" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

2.通过另一个APP隐式启动

    public void starAct() {
        Intent intent = new Intent();
        ComponentName cn = new ComponentName("com.fly2think.yiilock",
                "cn.fly2think.activity.TestActivity");
        intent.setComponent(cn);
        Uri uri = Uri.parse("cn.fly2think.activity.TestActivity");
        intent.setData(uri);
        startActivity(intent);
    }
### 实现安卓应用图标隐藏的方法 #### 方法一:使用 `activity-alias` 和移除 LAUNCHER 类别标签 为了在 Android 应用程序中隐藏图标,可以在 `AndroidManifest.xml` 文件内定义一个或多个带有 `android:targetActivity` 属性的 `<activity-alias>` 元素来指向实际的应用入口 Activity。接着,当希望隐藏该应用图标时,则可以禁用这些 alias 或者简单地删除/注释掉包含 `"android.intent.category.LAUNCHER"` 的意图过滤器部分[^1]。 ```xml <!-- 在 AndroidManifest.xml --> <application ...> <!-- 主活动 --> <activity android:name=".MainActivity"> ... </activity> <!-- 别名用于显示到启动器 --> <activity-alias android:name=".AliasForLauncher" android:enabled="true" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias> </application> ``` 要隐藏图标只需设置对应的 `activity-alias` 为不可用状态: ```java // Java 代码片段 ComponentName componentName = new ComponentName(context, "com.example.AliasForLauncher"); context.getPackageManager().setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); ``` #### 方法二:通过 ADB 命令启动应用而不依赖于桌面快捷方 即使去除了 LAUNCHER 类别标签,仍然能够利用命令行工具如 ADB 来直接打开应用程序。这允许开发者绕过图形界面而直接运行特定组件,这对于仅需作为后台进程工作的软件特别有用[^2]。 ```bash adb shell am start -n com.your.package.name/.YourActivityClassName ``` #### 方法三:针对定制 ROM 或具有更高权限的情况 对于拥有系统级访问权的应用来说,可以通过修改系统的某些内部机制达到更深层次控制的效果。例如更改 Launcher 组件中的逻辑判断哪些包应该被展示给用户;不过这种方法通常只适用于那些已经获取 root 权限或是制造商预装级别的项目,并不适合普通第三方开发者采用[^4]。 #### 方法四:调用其他 App 并尝试影响其行为 如果目标是让自己的应用影响另一个独立安装的应用的行为(比如试图隐藏后者),那么可能涉及到跨进程通信 (IPC),但这往往违反平台安全策略并可能导致私问题。因此不建议这样做除非确实有必要并且得到了适当授权[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值