我正在尝试为我的 Android 活动之一创建桌面快捷方式。我使用的代码适用于我读过的每个 tuto 示例:

    final Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    ComponentName name = new ComponentName(getPackageName(), ".MyActivity");
    shortcutIntent.setComponent(name);

    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


    final Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "blabla");
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);

    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    sendBroadcast(intent);
    finish();

我将主要操作添加到我的活动中:

    <activity android:label="@string/app_name" android:name=".MyActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

结果是应用程序不想启动!

在 Logcat 中一切看起来都很好:

10-01 01:17:51.591: INFO/ActivityManager(2424): Starting activity: Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=my.package.name/.MyActivity bnds=[125,384][235,522] (has extras) }

主页告诉我该应用程序尚未安装。

请帮助我,我完全迷失了,花了几个小时尝试解决问题并阅读我能得到的所有信息。

非常感谢!

有帮助吗?

解决方案

尝试这个:

  1. 摆脱 <intent-filter>
  2. 摆脱 ACTION_MAIN 只需使用 new Intent(this, MyActivity.class)
  3. 将 android:exported="true" 添加到清单中的元素中

其他提示

这可以,如果你有你的活动在AndroidManifest.xml中声明了两次,第一次发生作为发射器,然后就可以声明如下:

<activity android:name=".MyActivity" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top