gpt4 book ai didi

android - 如何从后台服务显示状态通知或弹出对话框?

转载 作者:太空狗 更新时间:2023-10-29 15:56:39 24 4
gpt4 key购买 nike

我已经创建了启动 Service 来监听我的应用程序中的传入消息。服务在背景中持续运行,认为应用程序已关闭,即用户下线。当用户离线并且有新消息时,我必须在状态栏或弹出对话框中显示通知(在这种情况下,服务未绑定(bind)到任何 Activity )。我面临以下问题:

  1. 在创建通知时我没有获得上下文和 Activity 。
  2. 当我显示来自服务类的对话框时,出现异常,如 “无法在未调用 Looper.prepare() 的线程内创建处理程序”。

我是 android 服务部分的新手,不知道如何解决这个问题。谁能指导我如何做到这一点?有什么链接可以指导我吗?由于这个问题,我被困住了。帮助高度赞赏。谢谢。

最佳答案

您可以发送通知并指定在用户启动时应运行的 Activity:

 private void sendNotification(Bundle bundle){
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon;
CharSequence tickerText = "bla bla";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, ACTIVITY_YOU_WANT_TO_START.class);
if(bundle!=null)
notificationIntent.putExtras(bundle); //you may put bundle or not
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
int any_ID_you_want = 1;
//if you send another notification with same ID, this will be replaced by the other one
mNotificationManager.notify(HELLO_ID, notification);
}

//To play a sound add this:
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3"); //for example

你可以开始另一个 Activity :

private boolean startActivity(Bundle bundle){
Intent myIntent = new Intent(mContext, ACTIVITY_YOU_WANT_TO_START.class);
if(bundle!=null)
myIntent.putExtras(bundle);//optional
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(myIntent);
return true;
}

关于android - 如何从后台服务显示状态通知或弹出对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938119/

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