6

Android のアクティビティの 1 つへのデスクトップ ショートカットを作成しようとしています。私が読んだすべての 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 で 2 回宣言されている場合に発生する可能性があります。最初はランチャーとして宣言され、次に次のように宣言されます。

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