Cómo recibir Intent. ACTION_PACKAGE_ADDED Intención. ¿ACTION_PACKAGE_REMOVED en el widget de la aplicación?

Como recibir Intent.ACTION_PACKAGE_ADDED y Intent.ACTION_PACKAGE_REMOVED en el widget de la aplicación?

Intenté agregar un filtro de intención en Manifest:

 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <!-- The widget provider -->
        <receiver android:name=".NetsWidgetProvider">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REMOVED"/>
                <action android:name="android.intent.action.PACKAGE_ADDED"/>
                <action android:name="com.oozic.widget.incstage.nets.ACTION_NOT_INSTALL"/>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

            </intent-filter>
            <!-- This specifies the widget provider info -->
            <meta-data android:name="android.appwidget.provider"
                    android:resource="@xml/widgetinfo" />
        </receiver>

    </application>

y también intenté registrarme en Código:

@Override
   public void onEnabled(Context context) {

      registerReceiver(context);
      Utils.log(TAG, "Register PACKAGE_ADDED PACKAGE_REMOVED");

   }

   private void registerReceiver(Context context) {
       IntentFilter filter = new IntentFilter();
       filter.addAction(Intent.ACTION_PACKAGE_ADDED);
       filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
       context.getApplicationContext().registerReceiver(this, filter);

   }

Pero ambos no funcionaron. ¡Gracias!

preguntado el 29 de julio de 12 a las 12:07

¿Intentó recibir la llamada cuando se agrega o elimina su propio paquete? Porque eso no funciona: desarrollador.android.com/reference/android/content/… -

Hola Time, ¿Cuál es el significado de "Tenga en cuenta que el paquete recién instalado no recibe esta transmisión"? ¿Cuánto tiempo se puede contar como "RECIENTEMENTE"? -

Eh, lo siento por esta definición poco clara. Con paquete recién instalado me refiero al paquete que contiene este código. Si instala SU paquete con este código, no se le notificará al respecto, ni cuando lo elimine. -

Gracias. No estoy en esta situación. Quiero recibir un mensaje en otro widget que muestre el estado de algunos apk. -

¿Podrías intentar agregar <category android:name="android.intent.category.DEFAULT" /> al filtro de intención? -

3 Respuestas

En AndroidManifest.xml agregando <data android:scheme="package" /> resuelto el problema.

<receiver android:name=".PackageAddedReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED"/>
        <data android:scheme="package" />
    </intent-filter>
</receiver>

respondido 22 nov., 13:18

    <receiver android:name=".NetsWidgetProvider"
        android:label="@string/appwidget_name" android:icon="@drawable/icon">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            <action android:name="com.oozic.widget.incstage.nets.ACTION_NOT_INSTALL"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_DATA_CLEARED"/>
            <action android:name="android.intent.action.PACKAGE_REMOVED"/>
            <data android:scheme="package" />
        </intent-filter>
        <!-- This specifies the widget provider info -->
        <meta-data android:name="android.appwidget.provider"
                android:resource="@xml/appwidgetinfo" />
    </receiver>

Respondido 08 ago 12, 07:08

Como complemento a esta respuesta, la clave aquí es "android:scheme", que faltaba en el manifiesto original de OP. En Java, puede establecer el esquema de la siguiente manera: filter.addDataScheme("paquete"); - Quint Stoffers

Envío una transmisión a mi widget, en mi lanzador personalizado cuando recibe el mensaje PACKAGE_REMOVED/ADDED. Este es el único trabajo que encontré para arreglar esto.

Respondido 10 ago 12, 09:08

En realidad, puedes usar la intención en el manifiesto. Solo necesita manejar onReceive en lugar de onUpdate. - desarrollador de Android

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.