6

我正在尝试为我在 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();

我将 MAIN 动作添加到我的活动中:

    <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) }

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

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

非常感谢!

4

2 回答 2

9

试试这个:

  1. 摆脱<intent-filter>
  2. 摆脱ACTION_MAIN并使用new Intent(this, MyActivity.class)
  3. 将 android:exported="true" 添加到清单中的元素
于 2010-10-01T00:40:19.070 回答
8

如果您在 AndroidManifest.xml 中声明了两次活动,则可能会发生这种情况,首先是作为启动器,然后只是声明如下:

<activity android:name=".MyActivity" />
于 2011-02-11T13:54:29.790 回答