Falha ao iniciar o atalho: o aplicativo não está instalado no seu telefone
-
26-09-2019 - |
Pergunta
Estou tentando criar um atalho de mesa para uma das minhas atividades no Android. Eu uso o código que funciona em todos os exemplos de Tuto que li:
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();
E eu adicionei a ação principal à minha atividade:
<activity android:label="@string/app_name" android:name=".MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
O resultado é que o aplicativo não deseja iniciar!
No logcat, tudo parece bem:
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) }
E a casa me diz que o aplicativo não está instalado.
Por favor, me ajude, estou totalmente perdido e passo algumas horas tentando resolver o problema e ler todas as informações que posso obter.
Muito obrigado!
Solução
Experimente isso:
- Livre -se do
<intent-filter>
- Livre -se do
ACTION_MAIN
e apenas usenew Intent(this, MyActivity.class)
- Adicione Android: exportado = "true" ao seu elemento no manifesto
Outras dicas
Isso pode acontecer se você tiver sua atividade declarada duas vezes no seu AndroidManifest.xml, primeiro como lançador e depois declarou como:
<activity android:name=".MyActivity" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow