Не удалось запустить ярлык: приложение не установлено на вашем телефоне

Я пытаюсь создать ярлык на рабочем столе для одного из моих действий в Android. Я использую код, который работает в каждом примере туто, который я читал:

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

А на Домой мне говорят, что приложение не установлено.

Пожалуйста, помогите мне, я полностью потерялся и трачу несколько часов, пытаясь решить проблему и прочитать всю информацию, которую я могу получить.

Спасибо большое!


person Waza_Be    schedule 30.09.2010    source источник


Ответы (2)


Попробуй это:

  1. избавиться от <intent-filter>
  2. избавьтесь от ACTION_MAIN и просто используйте new Intent(this, MyActivity.class)
  3. добавьте android:exported="true" в свой элемент в манифесте
person CommonsWare    schedule 01.10.2010
comment
ОШИБКА/Launcher(12197): у Launcher нет разрешения на запуск Intent { flg=0x10000000 cmp=my.package.name/.MyActivity bnds=[125,534][235,672] (есть дополнительные)}. Обязательно создайте ГЛАВНЫЙ фильтр намерений для соответствующего действия или используйте атрибут exported для этого действия. ( есть дополнения) } из ProcessRecord{485b9b38 12197:com.sec.android.app.twlauncher/10005} (pid=12197, uid=10005) требуется null - person Waza_Be; 01.10.2010
comment
@Profete162: Попробуйте добавить android:exported="true" к элементу <activity> в манифесте. - person CommonsWare; 01.10.2010
comment
Sem OK при добавлении Intent. ‹действие android:name=android.intent.action.MAIN /› - person Waza_Be; 01.10.2010
comment
Да, я могу подтвердить, что android.intent.action.MAIN необходим - person Waza_Be; 01.10.2010
comment
Комментарий Commonsware должен быть выбран для ответа - person Shine; 12.10.2012
comment
Можно добавить ‹intent-filter› ‹action android:name=android.intent.action.MAIN /› ​​‹/intent-filter› - person RxRead; 20.02.2014

Это может произойти, если ваша активность дважды объявлена ​​​​в вашем AndroidManifest.xml, сначала как средство запуска, а затем просто объявлено следующим образом:

<activity android:name=".MyActivity" />
person olafure    schedule 11.02.2011