Android 如何在通过UI更新单击通知时启动应用程序?
在我的应用程序中,我使用alarm manager实现android通知,以在特定时间获得通知。我在同一时间成功地获得了通知,但问题是当我的应用程序在后台时(通过单击“主页”按钮),若出现通知,并且用户单击通知,则显示强制关闭错误 我是这样设置通知的Android 如何在通过UI更新单击通知时启动应用程序?,android,user-interface,notifications,Android,User Interface,Notifications,在我的应用程序中,我使用alarm manager实现android通知,以在特定时间获得通知。我在同一时间成功地获得了通知,但问题是当我的应用程序在后台时(通过单击“主页”按钮),若出现通知,并且用户单击通知,则显示强制关闭错误 我是这样设置通知的 public void setRepeatingAlarm(long tym) { Intent intent = new Intent(this, ReminderService.class); PendingIntent pe
public void setRepeatingAlarm(long tym)
{
Intent intent = new Intent(this, ReminderService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ tym, 86400000, pendingIntent);
}
and this is my broadcast receiver class
public class ReminderService extends BroadcastReceiver {
NotificationManager nm;
@SuppressWarnings("deprecation")
@Override
public void onReceive(Context context, Intent intent)
{
Intent intent_view = new Intent(Intent.ACTION_MAIN);
intent_view.setClass(context.getApplicationContext(), CoachAppActivity.class);
intent_view.setAction("android.intent.action.MAIN");
intent_view.addCategory("android.intent.category.LAUNCHER");
intent_view.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "Coach App";
CharSequence message = "View your daily tips.";
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
intent_view, 0);
Notification notif = new Notification(R.drawable.icon,"View your daily tips.", System.currentTimeMillis());
notif.setLatestEventInfo(context, from, message, contentIntent);
notif.flags |= Notification.FLAG_AUTO_CANCEL;
nm.notify(1, notif);
}
}
在上述代码的帮助下,我在用户想要的特定时间收到通知。现在我正在更新activity类的onResume()方法上的UI元素,如下所示
public void updateUi(List<ParseObject> objects)
{
txtData = (TextView) findViewById(R.id.textView1);
txt_link1 = (TextView) findViewById(R.id.txt_link1);
txt_link2 = (TextView) findViewById(R.id.txt_link2);
txtData.setText(objects.get(0).getString("DailyInfo"));
SpannableString content1 = new SpannableString(objects.get(0)
.getString("Title_Hyperlink1"));
content1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
txt_link1.setText(content1);
SpannableString content2 = new SpannableString(objects.get(0)
.getString("Title_Hyperlink2"));
content2.setSpan(new UnderlineSpan(), 0, content2.length(), 0);
txt_link2.setText(content2);
link1 = (objects.get(0).getString("Hyperlink1").toString() == null ? ""
: objects.get(0).getString("Hyperlink1").toString());
link2 = (objects.get(0).getString("Hyperlink2").toString() == null ? ""
: objects.get(0).getString("Hyperlink2").toString());
}
public void updateUi(列出对象)
{
txtData=(TextView)findViewById(R.id.textView1);
txt_link1=(TextView)findViewById(R.id.txt_link1);
txt_link2=(TextView)findViewById(R.id.txt_link2);
setText(objects.get(0.getString(“DailyInfo”));
SpannableString content1=新的SpannableString(objects.get(0)
.getString(“Title_Hyperlink1”);
content1.setSpan(新的下划线span(),0,content1.length(),0);
txt_link1.setText(content1);
SpannableString content2=新的SpannableString(objects.get(0)
.getString(“Title_Hyperlink2”);
content2.setSpan(新的下划线span(),0,content2.length(),0);
txt_link2.setText(content2);
link1=(objects.get(0).getString(“Hyperlink1”).toString()==null?”
:objects.get(0.getString(“Hyperlink1”).toString();
link2=(objects.get(0).getString(“Hyperlink2”).toString()==null?”
:objects.get(0.getString(“Hyperlink2”).toString();
}
调试应用程序时,我发现无法获取UI元素的值。若我通常在不点击通知的情况下启动应用程序,它不会产生任何问题,应用程序会出现在前台。请帮助我在这个情况下,也让我知道在任何混乱的情况下 使用LogCat并检查与“强制关闭错误”关联的Java堆栈跟踪。是的,我也检查了我的LogCat。问题是,当我的应用程序启动时,单击时间文本字段值为空的通知。我不明白为什么会这样。。。