gpt4 book ai didi

android - 我正在从应用程序向应用程序发送广播。为了将我的代码升级到 Android O,我已将我的隐式广播转换为显式,但它不起作用

转载 作者:行者123 更新时间:2023-11-29 23:18:29 26 4
gpt4 key购买 nike

接收应用的Manifest.xml。

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<receiver android:name=".DemoReceiver"
android:exported="true" android:enabled="true">
<intent-filter>
<action android:name="com.example.myparentapplication.demo"/>
</intent-filter>
</receiver>

在接收应用中声明的接收者:

public class DemoReceiver extends BroadcastReceiver {

public DemoReceiver(){}

@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "Received");

String data = intent.getStringExtra("data");
Toast.makeText(context,"opening the intent data : " + data,Toast.LENGTH_LONG ).show();
}
}

广播应用发送的广播:

Intent intent = new Intent("com.example.myparentapplication.demo");
intent.putExtra("data","job dispatched");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), "com.example.myparentapplication.DemoReceiver"));
sendBroadcast(intent);

这样我在将我的 api 升级到 Android 'O' 后使用广播,但我没有收到任何广播。在文档中,它说显式广播允许在 Android Oreo 之后在 list 中注册。请适本地指导我,这里有什么问题?注意:接收应用是后台应用。所以我不能动态注册广播。我已经尝试了堆栈溢出的几乎所有解决方案,但仍然无法正常工作。

最佳答案

intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), "com.example.myparentapplication.DemoReceiver"));

getApplicationContext().getPackageName() 将返回发送 应用程序的应用程序 ID。您的 ComponentName 需要接收应用程序的应用程序 ID。

关于android - 我正在从应用程序向应用程序发送广播。为了将我的代码升级到 Android O,我已将我的隐式广播转换为显式,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com