2010-09-30 16 views
6

Estoy tratando de crear un acceso directo de escritorio a una de mis actividades en Android. utilizo el código que funciona en todos los ejemplo tuto que he leído:No se pudo iniciar el acceso directo: la aplicación no está instalada en su teléfono

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

Y añadió la acción principal de mi actividad:

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

El resultado es que la aplicación no quiere poner en marcha !

En el Logcat todo parece bien:

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

y el hogar me dice que la aplicación no está instalada.

Por favor, ayúdenme, estoy totalmente perdido y paso unas horas tratando de resolver el problema y leer toda la información que pueda obtener.

¡Muchas gracias!

Respuesta

9

Prueba esto:

  1. deshacerse del <intent-filter>
  2. deshacerse de la ACTION_MAIN y sólo tiene que utilizar new Intent(this, MyActivity.class)
  3. añadir androide: exportados = "true" a su elemento en el manifiesto
+0

ERROR/Launcher (12197): Iniciador no tiene el permiso para poner en marcha Intención {flg = 0x10000000 cmp = my.package.name/.MyActivity bnds = [125534] [235672] (tiene extras)}. Asegúrese de crear un filtro de intención PRINCIPAL para la actividad correspondiente o use el atributo exportado para esta actividad. 10-01 02: 51: 57.701: ERROR/Launcher (12197): java.lang.SecurityException: denegación de permiso: inicio de la intención {flg = 0x10000000 cmp = my.package.name/.MyActivity bnds = [125,534] [235,672] (tiene extras)} de ProcessRecord {485b9b38 12197: com.sec.android.app.twlauncher/10005} (pid = 12197, uid = 10005) requiere nulo –

+7

@ Profete162: intente agregar 'android: exported =" true "' a su elemento '' en el manifiesto. – CommonsWare

+1

Sem OK al agregar la intención.

9

Esto puede suceder si su actividad se declara dos veces en su AndroidManifest.xml, primero como un iniciador y luego simplemente declarado como:

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