[英]Android onReceive in BroadcastReceiver not working
I added a receiver to listen when app is installed. 我添加了一个接收器,以在安装应用程序时收听。 But it is not working.
但这是行不通的。 Here is my code in AndroidManifest.xml
这是我在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>
Here is my code in MainActivity (launcher activity) , function onCreate. 这是我在MainActivity(启动器活动)函数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);
}
Here is my code in IQTestReceiver (this class is written in other file) 这是我在IQTestReceiver中的代码(此类是在其他文件中编写的)
public class IQTestReceiver extends BroadcastReceiver {
public IQTestReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
String packageName=intent.getData().getEncodedSchemeSpecificPart();
Log.e("HELLO",packageName);
}
}
I set a breakpoint in onReceive function , but it doesn't run when i debug. 我在onReceive函数中设置了一个断点,但是在调试时它不会运行。
Thanks for your helping. 感谢您的帮助。
You can not receive PACKAGE_ADDED
or PACKAGE_REPLACED
for your own app, if that is what you're trying. 如果您要尝试的是自己的应用,则无法收到
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 ." “广播操作:设备上已安装了新的应用程序软件包。数据包含该软件包的名称。 请注意,新安装的软件包不会收到此广播 。”
See http://developer.android.com/reference/android/content/Intent.html 参见http://developer.android.com/reference/android/content/Intent.html
set your broadcasrt in manifest like this 像这样在清单中设置您的广泛
<receiver
android:name=".IQTestReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="check_values"/>
</intent-filter>
</receiver>
and send the broadcast like this..... Intent it1=new Intent(Intent.ACTION_USER_PRESENT); it1.setAction("check_values"); it1.putExtra("data_key1",message); sendBroadcast(it1);
然后像这样发送广播.....
Intent it1=new Intent(Intent.ACTION_USER_PRESENT); it1.setAction("check_values"); it1.putExtra("data_key1",message); sendBroadcast(it1);
Intent it1=new Intent(Intent.ACTION_USER_PRESENT); it1.setAction("check_values"); it1.putExtra("data_key1",message); sendBroadcast(it1);
and in on receive would be like this.... 并在接收时将是这样...
@Override
public void onReceive(Context context, Intent intent)
{
data1=intent.getStringExtra("data_key1");
System.out.println("ffffff11" + data1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.