Android BroadcastReceiver 中的 onReceive 不工作

Android onReceive in BroadcastReceiver not working

我添加了一个接收器来在安装应用程序时进行监听。但它不起作用。这是我在 AndroidManifest.xml

中的代码
 <receiver android:enabled="true" 
   android:exported="true"
   android:name="com.bsp.iqtest.reiceiver.IQTestReceiver">
   <intent-filter>

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

这是我在 MainActivity (launcher activity) 中的代码,函数 onCreate。

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   IQTestReceiver br = new IQTestReceiver();
   IntentFilter intentFilter = new IntentFilter();
   intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
   intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
   intentFilter.addDataScheme("package");
   registerReceiver(br, intentFilter);
}

这是我在 IQTestReceiver 中的代码(这个 class 是写在其他文件中的)

public class IQTestReceiver extends BroadcastReceiver {
  public IQTestReceiver() {
  }
  @Override
  public void onReceive(Context context, Intent intent) {
    String packageName=intent.getData().getEncodedSchemeSpecificPart();
    Log.e("HELLO",packageName);
  }
}

我在 onReceive 函数中设置了一个断点,但是当我调试时它没有 运行。

感谢您的帮助。

像这样在清单中设置广播

 <receiver
            android:name=".IQTestReceiver"
            android:exported="true"
            android:enabled="true">

            <intent-filter>
                <action android:name="check_values"/>

            </intent-filter>

        </receiver>

然后像这样发送广播......Intent it1=new Intent(Intent.ACTION_USER_PRESENT); it1.setAction("check_values"); it1.putExtra("data_key1",message); sendBroadcast(it1);

在接收时会是这样....

  @Override
        public void onReceive(Context context, Intent intent)
        {
           data1=intent.getStringExtra("data_key1");
           System.out.println("ffffff11" + data1);
      }

您可以为您的自己的应用程序接收PACKAGE_ADDEDPACKAGE_REPLACED,如果那是您正在尝试。

"Broadcast Action: A new application package has been installed on the device. The data contains the name of the package. Note that the newly installed package does not receive this broadcast."

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