2011-04-21 11 views
20

¿Hay alguna manera de iniciar y aplicar Android después de un inicio de forma automática si está en el /sdcard?Android - Cómo iniciar una aplicación en la/sdcard después del arranque

Ok, probablemente por BroadcastReceiver. ¿Pero qué acción es la correcta?

ACTION_BOOT_COMPLETED - does not work if it is on the /sdcard (documented) 
ACTION_MEDIA_MOUNTED - does not work if it is on the /sdcard (which is undocumented) 
ACTION_EXTERNAL_APPLICATIONS_AVAILABLE - does not work, I do not know why 
ACTION_USER_PRESENT - does not work if the BroadcastReceiver is registered in AndroidManifest (which is undocumented, but documentation bug has been reported) 

Gracias
Jan

+0

¿alguna vez resolvió esto? Tengo un problema similar ahora. –

+0

Tu pregunta me ayudó a encontrar mi respuesta, gracias. : D –

+0

Si lo encuentra útil, debe aceptar la respuesta. –

Respuesta

0

lo general registrarse en cada filtro de intención para un receptor de radiodifusión en ambos sentidos (Android manifiestos, así como de forma dinámica en una clase que se extiende Aplicación)

En AndroidManifest.xml como :

<receiver 
      android:name=".broadcastReciever" 
      android:enabled="true" 
      android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE" /> 
      </intent-filter> 
     </receiver> 

y en una clase que se extiende Aplicación:

registerReceiver(new broadcastReciever(), new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE)); 

y no olvide agregar el permiso RECEIVE_BOOT_COMPLETED y registrar la clase que extiende la aplicación en el manifiesto de Android.

Esto debería hacer; no dude en pedir más ayuda/aclaración.

1

Por favor, menciónalo en el archivo de manifiesto.

</uses-permission>  
<receiver android:name=".BootReceiver" 
    android:enabled="true" 
    android:exported="true" 
    android:label="BootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
    </intent-filter> 
</receiver> 

proporciona permiso "android.permission.RECEIVE_BOOT_COMPLETED" como elemento secundario de menifest.

y una cosa más que su aplicación no debe instalarse en sdcard.

+0

Esto no responde a la pregunta porque la pregunta específicamente preguntaba cómo notificarse durante el arranque cuando la aplicación * está * instalada en la tarjeta SD. – BladeCoder

+0

No estoy seguro pero no es posible según yo. –

+0

Estoy de acuerdo, así que la respuesta correcta es que no es posible. – BladeCoder

0

tratar de usar <receiver android:name=".BootCompleteReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver>

y esto <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

quizá QUICKBOOT_POWERON ayuda u

1

Según Google, no debería poner cualquier aplicación que desee ejecutar en el arranque en una unidad externa.

"El sistema entrega la transmisión ACTION_BOOT_COMPLETED antes de que el almacenamiento externo esté montado en el dispositivo. Si su aplicación está instalada en el almacenamiento externo, nunca podrá recibir esta transmisión".

http://developer.android.com/guide/topics/data/install-location.html#ShouldNot

Cuestiones relacionadas