我是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());
}
注意: 我没有在消息监听器实现中接收上下文,这个类是一个非活动类。我正在使用android注释框架。
答案 0 :(得分:1)
@Awais:你必须将上下文传递给非活动/接收者/服务类。您还可以使用其他选项,例如在应用程序包中定义应用程序类,通过此应用程序包,您可以拥有应用程序上下文。 在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;
}
}
私有类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());
}
}