2010-09-30 4 views
6

Sto tentando di creare un collegamento sul desktop per una delle mie attività in Android. io uso il codice che il lavoro in ogni esempio tuto ho letto:Impossibile avviare la scelta rapida: l'applicazione non è installata sul telefono

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 ho aggiunto L'azione principale per la mia attività:

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

Il risultato è che l'applicazione non vuole lanciare !

In tutto Logcat sembrano bene:

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 la casa mi dicono che l'applicazione non è installata.

Please help me, Sono totalmente perso e trascorrere qualche ora cercando di risolvere il problema e leggere tutte le informazioni che posso ottenere.

Grazie mille!

risposta

9

Prova questo:

  1. sbarazzarsi del <intent-filter>
  2. sbarazzarsi del ACTION_MAIN e basta usare new Intent(this, MyActivity.class)
  3. aggiungere Android: esportato = "true" per il vostro elemento nel manifesto
+0

ERRORE/Launcher (12197): Launcher non ha l'autorizzazione per lanciare Intent {FLG = 0x10000000 CMP = my.package.name/.MyActivity BNDS = [125.534] [235.672] (ha comparse)}. Assicurati di creare un filtro di intent MAIN per l'attività corrispondente o usa l'attributo esportato per questa attività. 10-01 02: 51: 57.701: ERRORE/Launcher (12197): java.lang.SecurityException: Permissione Negazione: inizio Intent {flg = 0x10000000 cmp = my.package.name/.MyActivity bnds = [125,534] [235,672] (ha extra)} da ProcessRecord {485b9b38 12197: com.sec.android.app.twlauncher/10005} (pid = 12197, uid = 10005) richiede null –

+7

@ Profeta162: prova ad aggiungere 'android: exported =" true "' a il tuo elemento '' nel manifest. – CommonsWare

+1

Sem OK quando si aggiunge l'intenzione.

9

Questo può accadere se la tua attività è stata dichiarata due volte nel tuo AndroidManifest.xml, prima come lanciatore e poi appena dichiarato come:

<activity android:name=".MyActivity" />