una tarda software sistema samsung que mis instalando hacer error despues cuanto borran borra archivos actualizo actualizar actualizacion android broadcast

tarda - si actualizo mi android se borran mis archivos



Android: reiniciar la aplicación después de la actualización-ACTION_PACKAGE_REPLACED (2)

Pongo el siguiente receptor en el AndroidManifest.xml

<receiver android:name=".StartupReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> </intent-filter> </receiver>

Por lo tanto, mi aplicación se puede iniciar con la actualización y el reinicio del dispositivo. Por supuesto, como todos han mencionado que necesitas API 12+ para MY_PACKAGE_REPLACED.

Mi aplicación que no está en Play Store verifica en la web Si hay una versión nueva, descárguela e iníciela. Después de la instalación, me gustaría reiniciar la aplicación y utilizaría un BroadcastRecevier con ACTION_PACKAGE_REPLACED . Este es el código:

Emisión:

public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)){ ApplicationInfo app = new ApplicationInfo(); if(app.packageName.equals("it.android.downloadapk")){ Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage(app.packageName); context.startActivity(LaunchIntent); } } }

Manifiesto:

<receiver android:name="it.android.downloadapk.Broadcast"> <intent-filter> <action android:name="android.intent.action.ACTION_PACKAGE_REPLACED"></action> <data android:scheme="package" android:path="it.android.downloadapk" /> </intent-filter> </receiver>

El problema es que cuando instalo una nueva apk, parece que no se inicia Broadcast, ¿por qué?


mira esto:

¿Cómo saber si mi aplicación de Android se ha actualizado para restablecer una alarma?

la solución correcta es que utiliza la cadena incorrecta en el manifiesto: http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REPLACED

debería ser "android.intent.action.PACKAGE_REPLACED" en su lugar.

ok, veo que lo que he escrito todavía no es suficiente para probarlo, así que haré una excepción y publicaré un proyecto completo solo para demostrar que funciona: el código de la aplicación está en un paquete llamado "com.broadcast_receiver_test". no se olvide de ejecutarlo antes de la prueba, o de lo contrario no funcionará en algunas versiones de Android (creo que API 11+).

manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.broadcast_receiver_test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="3" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".BroadcastReceiverTestActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED"/> <data android:scheme="package" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED"/> <data android:scheme="package" /> </intent-filter> </receiver> </application> </manifest>

MyBroadcastReceiver.java:

public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context,final Intent intent) { final String msg="intent:"+intent+" action:"+intent.getAction(); Log.d("DEBUG",msg); Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); } }

solo ejecútalo y verás que funcione perfectamente.

EDITAR: si su aplicación es para API12 y superior, y solo desea manejar el caso de actualización de su aplicación, puede usar esta intención solo:

http://developer.android.com/reference/android/content/Intent.html#ACTION_MY_PACKAGE_REPLACED