gpt4 book ai didi

java - 未在 JMS listner 非 Activity 类 android 中获取应用程序上下文

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

我是 android 的新手,我正在使用 jms 主题在 Android 中接收消息,现在我想生成该消息的通知,例如,当收到消息时出现通知。为了生成通知,我需要应用程序的上下文我尝试了不同的方法但现在没有人知道如何在消息监听器中获取上下文。我的监听器实现和通知功能

消息监听器

    private class DestinationMessageListener implements MessageListener {

public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {

System.out.println(message);
Context ctx = getApplicationContext();
sendNotification("Helo","title",1,"test");

} catch (Exception ex) {
ex.printStackTrace();
//logMessage("EXCEPTION: " + ex.getMessage());
}
}

通知类

public void sendNotification(String title, String msg, int msgId, String badge,Context ctx) {
mNotificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

Intent tabsIntent = new Intent(ctx, TabsFragmentActivity_.class);
tabsIntent.putExtra("GO_TO_MESSAGES", true);
tabsIntent.putExtra("MSG_ID", msgId);
tabsIntent.putExtra(TabsFragmentActivity.BADGE_KEY, badge);
PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, tabsIntent, PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx);

mNotificationManager.notify(msgId, mBuilder.build());

}

注意:我没有在消息监听器实现中接收上下文,并且此类是非 Activity 类。我正在使用 android 注释框架。

最佳答案

@Awais:您必须将上下文传递给非 Activity/接收者/服务类。您还可以有其他选项,例如在您的应用程序包中定义应用程序类,并且通过该应用程序包您可以获得应用程序上下文。在 Android Manifest 文件中声明如下

<application android:name="com.xyz.MyApplication">

</application>

然后写类

public class MyApplication extends Application{

private static Context context;

public void onCreate(){
super.onCreate();
MyApplication.context = getApplicationContext();
}

public static Context getAppContext() {
return MyApplication.context;
}
}

私有(private)类 DestinationMessageListener 实现 MessageListener {

public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {

System.out.println(message);
Context ctx = MyApplication.getAppContext();
sendNotification("Helo","title",1,"test",ctx);

} catch (Exception ex) {
ex.printStackTrace();
//logMessage("EXCEPTION: " + ex.getMessage());
}
}

关于java - 未在 JMS listner 非 Activity 类 android 中获取应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700278/

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