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_ADDED
或PACKAGE_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
我添加了一个接收器来在安装应用程序时进行监听。但它不起作用。这是我在 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_ADDED
或PACKAGE_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