2011-06-21 10 views
7

posible duplicado:
Android create shortcuts on the home screencreación de accesos directos en Android a través de Intención

estoy teniendo uno TextViewButton y en mi actividad (HomeActivity.class).

Meta: Cuando hago clic en el Button debe crear un acceso directo con la imagen por defecto de Android como icono y texto tal como aparece en el TextView.

Hasta ahora me he dado cuenta de que podemos crear accesos directos utilizando ACTION_CREATE_SHORTCUT

Este es el código que tengo hasta ahora:

Intent result = new Intent(android.content.Intent.ACTION_CREATE_SHORTCUT); 
result.putExtra(Intent.EXTRA_SHORTCUT_INTENT, 
       new Intent(getApplicationContext(), Editor.class)); 
result.putExtra(TodoDbAdapter.KEY_ROWID,rowid); 
result.putExtra(Intent.EXTRA_SHORTCUT_NAME,textView.getText()); 
result.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
       Intent.ShortcutIconResource.fromContext(HomeActivity.this, 
                 R.drawable.icon)); 
setResult(RESULT_OK, result); 

Mi archivo de manifiesto:

<activity android:name=".HomeActivity" android:label="@string/app_name"> 

     <intent-filter> 
       <action android:name="android.intent.action.CREATE_SHORTCUT" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

Pero este código no crea ningún atajo.

¿Cómo puedo crear accesos directos?

+0

creo que deberías echar un vistazo a [esta página] (http://codinggeek.org/2011/ 01/02/android-how-to-add-home-screen-shortcuts-to-your-app /). También es posible que sea un duplicado de [esta pregunta] (http://stackoverflow.com/questions/5676090/android-is-there-a-programming-way-to-create-a-web-shortcut-on-home-screen) o [esta pregunta] (http://stackoverflow.com/questions/6337431/android-create-shortcuts-on-the-home-screen). –

Respuesta

17

Prueba esto:

Intent shortcutIntent; 
shortcutIntent = new Intent(); 
shortcutIntent.setComponent(new ComponentName(activity.getPackageName(), ".classname")); 

shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

final Intent putShortCutIntent = new Intent(); 
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 

// Sets the custom shortcut's title 
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Title"); 
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(PersonProfile.this, R.drawable.icon)); 
putShortCutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
sendBroadcast(putShortCutIntent); 

y añadir este permiso en el manifiesto:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 
+0

No funciona para mí. ¿Esto todavía funciona? –

+0

@CapDroid: Esto crea un atajo, incluso si existe uno. ¿Podemos crear el acceso directo de una manera que reemplace al existente en lugar de duplicar ...? Por favor guía. – Mudassir

+0

@CapDroid: ¿No es solo para el iniciador de stock? ¿O cualquier iniciador establecido como predeterminado por el usuario? –

Cuestiones relacionadas