gpt4 book ai didi

android - 任务完成后如何从 intentservice 获得通知?

转载 作者:行者123 更新时间:2023-11-29 15:22:00 27 4
gpt4 key购买 nike

好吧,我正在关注这个 link

甚至添加了广播接收器,如上面的链接所示。但我没有通知任务完成,我想在此 Intent 服务完成后运行一些 Activity 。谁能帮帮我。

我收到如下错误:

Permission Denial: broadcasting Intent 
{ act=com.saaranga.services.GetTaxonomy.DATA_RETRIEVED
cat=[android.intent.category.DEFAULT] (has extras) }
from com.saaranga.lib (pid=1089, uid=10034)
equires com.saaranga.services.Permissions.SEND_SIMPLE_NOTIFICATIONS
due to receiver com.saaranga.lib/com.saaranga.services.ServiceReciver

在 intentService 中我已经初始化了:

public static final String ACTION_NOTIFY="com.saaranga.services.GetTaxonomy.DATA_RETRIEVED";

private void sendSimpleBroadcast(int count)
{
Intent broadcastIntent = new Intent();

broadcastIntent.setAction(GetTaxonomy.ACTION_NOTIFY);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
broadcastIntent.putExtra(PARAM_OUT_COUNT, count);
// broadcastIntent.setClass(getApplicationContext(), getClass());
sendBroadcast(broadcastIntent, Permissions.SEND_SIMPLE_NOTIFICATIONS);
}

并创建了一个权限类:

package com.saaranga.services;

public class Permissions {
public static final String SEND_SIMPLE_NOTIFICATIONS = "com.saaranga.services.Permissions.SEND_SIMPLE_NOTIFICATIONS";}

在 list 文件中:

 <permission 
android:name="com.saaranga.services.Permissions.SEND_SIMPLE_NOTIFICATIONS"
android:label="permission to send simple notifications"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:protectionLevel="normal" />

<service
android:name="com.saaranga.services.GetTaxonomy"
android:enabled="true"
android:exported="true">
</service>

<receiver android:name="com.saaranga.services.ServiceReciver"
android:exported="true"
android:permission="com.saaranga.services.Permissions.SEND_SIMPLE_NOTIFICATIONS">
<intent-filter>
<action android:name="com.saaranga.services.GetTaxonomy.DATA_RETRIEVED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>

甚至在上面的链接中添加了 Broadcast reciver。但我没有通知任务完成,我想在此 Intent 服务完成后运行一些 Activity 。谁能帮帮我。

最佳答案

第 1 步:

在MainActivity.class中

private ResponseReceiver receiver;
//register reciver

IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new ResponseReceiver();
registerReceiver(receiver, filter);

第 2 步:扩展 BroadcastReceiver 的 MainActivity.class 中的子类。

    public class ResponseReceiver extends BroadcastReceiver {
public static final String ACTION_RESP = "com.saaranga.intent.action.MESSAGE_PROCESSED";
@Override
public void onReceive(Context context, Intent intent) {

Toast.makeText(getApplicationContext(), "download complete", Toast.LENGTH_SHORT).show();
}

}

第 3 步:在 IntentService 中:

@Override
protected void onHandleIntent(Intent intent) {
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
sendBroadcast(broadcastIntent);
}

这段代码对我来说很好用。干杯。

关于android - 任务完成后如何从 intentservice 获得通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422030/

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