2010-09-30 4 views
6

Ich versuche, eine Desktopverknüpfung zu einer meiner Aktivität in Android zu erstellen. Ich verwende den Code, der in jedem tuto Beispiel arbeitet ich habe:Konnte Verknüpfung nicht starten: Anwendung ist nicht auf Ihrem Telefon installiert

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(); 

Und ich hinzugefügt, um die Hauptsache meine Aktivität:

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

Das Ergebnis ist, dass die Anwendung will nicht starten !

Im Logcat alles scheint in Ordnung:

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

Und das Haus mir sagen, dass die Anwendung nicht installiert ist.

Bitte helfen Sie mir, ich bin total verloren und verbringe ein paar Stunden damit, das Problem zu lösen und alle Informationen zu lesen, die ich bekommen kann.

Vielen Dank!

Antwort

9

Try this:

  1. loszuwerden der <intent-filter>
  2. loszuwerden, die ACTION_MAIN und verwenden nur new Intent(this, MyActivity.class)
  3. android hinzufügen: exportiert = "true" zu Ihrem Element in das Manifest
+0

ERROR/Launcher (12197): Launcher keine Erlaubnis hat Intent zu starten {flg = 0x10000000 cmp = my.package.name/.MyActivity BNDS = [125534] [235672] (hat Extras)}. Stellen Sie sicher, dass Sie einen MAIN-Intent-Filter für die entsprechende Aktivität erstellen oder verwenden Sie das exportierte Attribut für diese Aktivität. 10-01 02: 51: 57.701: FEHLER/Launcher (12197): java.lang.SecurityException: Berechtigungsverweigerung: Start Absicht {flg = 0x10000000 cmp = mein.package.name/.MyActivity bnds = [125.534] [235.672] (hat Extras)} von ProcessRecord {485b9b38 12197: com.sec.android.app.twlauncher/10005} (pid = 12197, uid = 10005) benötigt Null –

+7

@ Profete162: Versuchen Sie, hinzufügen: android: exportierte = "True" 'zu Ihr '' -Element im Manifest. – CommonsWare

+1

Sem OK, wenn die Absicht hinzugefügt wird.

9

Dies kann passieren, wenn Sie Ihre Aktivität zweimal in Ihrem AndroidManifest.xml deklariert haben, zuerst als Startprogramm und dann einfach wie folgt deklariert:

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