Android快捷方式启动一个独立Activity

本文介绍如何在Android中创建一个快捷方式来启动一个完全独立的Activity,并确保在应用处于后台时启动该Activity不会唤醒整个应用。

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

需求描述

创建一个快捷方式,通过快捷方式启动一个完全独立的Activity。(注意,当应用在后台运行时,启动该Activity时不要将应用程序唤醒)

创建快捷方式

private void createShortCut(){
        Intent shortcutIntent = new Intent();
        //设置点击快捷方式时启动的Activity,因为是从Lanucher中启动,所以包名类名要写全。
        shortcutIntent.setComponent(new ComponentName("com.test", "com.test.SecondActivity"));
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS|Intent.FLAG_ACTIVITY_NEW_TASK);
        Intent resultIntent = new Intent();
        //设置快捷方式图标
        resultIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                Intent.ShortcutIconResource.fromContext(this,
                        R.drawable.ic_launcher));
        //启动的Intent
        resultIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        //设置快捷方式的名称
        resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                getString(R.string.app_name));
        resultIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        sendBroadcast(resultIntent);
    }

AndroidManifest文件配置

在Activity标签里加上这一段代码,用于外部启动

<activity
     android:name="com.test.SecondActivity"
     android:excludeFromRecents="true"
     android:launchMode="singleInstance">
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />
     </intent-filter>
</activity>

注意事项

包名和类名不要写错,如果gradle里把包名改变了,要写成gradle里的包名(也就是那个applicationId)。
android:excludeFromRecents=”true” android:launchMode=”singleInstance”这两个属性一定要加,不然Activity不是独立的,可以通过带有透明效果的Activity去测试(如果不设置,程序已经在后台运行时,Activity启动起来时会把应用唤醒)。android:exported属性不要设置,或者设置成true,这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互,如果设置为true,则能够被调用或交互,否则不能。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值