2011-08-09 16 views
5

Tengo una aplicación que crear un acceso directo de la siguiente manera:de acceso directo para iniciar una actividad

Intent shortcutIntent = new Intent(this, MYWEBVIEW.class); 
String fileHtml = trovaHtml(path); 
shortcutIntent.putExtra("appToLaunch", appId); 
shortcutIntent.putExtra("fileHtml", fileHtml); 
shortcutIntent.setAction(Intent.ACTION_VIEW); 

Intent addIntent = new Intent(); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, dirAppName); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
    Intent.ShortcutIconResource.fromContext(this, R.drawable.icon)); 
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
this.sendBroadcast(addIntent); 

sé que el código está en desuso, pero vamos a olvidarnos de que .......

MYWEBVIEW no es la actividad principal de mi aplicación, es una vista web que abre una página html sin conexión, y la ruta a este archivo html está dentro del valor adicional "fileHtml".

Cuando haga clic en el acceso directo me sale este error:

08-08 14:15:37.907: ERROR/Launcher(165): Launcher does not have the permission to launch Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=market.finestraprincipale/.MyAppActivity bnds=[3,217][77,296] (has extras) }. Make sure to create a MAIN intent-filter for the corresponding activity or use the exported attribute for this activity. tag=ShortcutInfo(title=myFile) intent=Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=market.finestraprincipale/.MYWEBVIEW bnds=[3,217][77,296] (has extras) }

08-08 14:15:37.907: ERROR/Launcher(165): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=market.finestraprincipale/.MYWEBVIEW bnds=[3,217][77,296] (has extras) } from ProcessRecord{405875c8 165:com.android.launcher/10026} (pid=165, uid=10026) requires null

¿Cómo puedo corregir estos errores? ¿Hay alguna manera de crear dos instancias de la misma aplicación?

Por ejemplo, estoy dentro de mi aplicación, creo un acceso directo, presiono el botón de inicio para que la aplicación quede en segundo plano y cuando hago clic en el acceso directo comienzo la actividad MYWEBVIEW pero dentro de una nueva instancia de mi aplicación ... ... así que básicamente puedo tener más vistas web abiertas al mismo tiempo.

Respuesta

7

¿Tiene el siguiente permiso en su manifest.xml?

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

también vemos que la actividad que está tratando de poner en marcha ha definido el siguiente filtro intención:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
</intent-filter> 
+0

Sí, no me sale el error al crear el acceso directo, lo consigo cuando hago clic en el atajo ... probablemente porque está llamando a una actividad que no es la principal ..... .por lo menos supongo ... – Sgotenks

+0

Intenta agregar '' permission.INTERNET''. Es posible que el atajo intente iniciar el navegador (ya que está intentando abrir una URL). ¿Estás subclasificando la clase '' WebViewClient'' como se sugiere [aquí] (http://developer.android.com/resources/tutorials/views/hello-webview.html)? –

+0

Sí, estoy haciendo ambas cosas ... Si navego por mi aplicación desde la actividad principal a MYWEBVIEW, todo funciona bien, abre la página html correcta ... pero si intento abrirla directamente desde el acceso directo me da ese error ... ¿puede un atajo abrir una actividad que no es la principal? Porque si cambio el objetivo del acceso directo a la actividad principal de mi aplicación funciona :(pero necesito ir directamente a otra – Sgotenks

0

yo creo que hay que añadir acción dentro de su actividad MYWEBVIEW en el archivo de manifiesto. Intento esto y funciona.

Cuestiones relacionadas