UIMain可以通過點擊應用程序圖標或通知圖標打開,我希望定義打開活動的方式。如何通過單擊通知圖標知道活動已打開?
所以我使用notificationIntent.putExtra("IsStartFromIcon",true)
設置標籤,但Utility.LogError(""+isStartFromIcon)
總是顯示false,我的代碼有什麼問題?
還有其他更好的方法嗎?謝謝!
public class UIMain extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
findViewById(R.id.buttonClose).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PublicParFun.DisplayIconByContent(mContext, "This is OK");
finish();
}
});
boolean isStartFromIcon=this.getIntent().getBooleanExtra("IsStartFromIcon",false);
Utility.LogError(""+isStartFromIcon);
}
}
PublicParFun.cs
public class PublicParFun {
public static void DisplayIconByContent(Context myContext,String myContentText) {
CharSequence contentTitle= myContext.getResources().getString(R.string.NotificationTitle);
Intent notificationIntent = new Intent(myContext, ui.UIMain.class);
notificationIntent.putExtra("IsStartFromIcon",true);
PendingIntent contentItent = PendingIntent.getActivity(myContext, 0,notificationIntent, 0);
Notification.Builder builder = new Notification.Builder(myContext)
.setSmallIcon(R.drawable.icon)
.setContentTitle(contentTitle)
.setContentText(myContentText)
.setContentIntent(contentItent);
Notification notification = builder.build();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
NotificationManager notificationManager = (NotificationManager) myContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
notificationManager.notify(myContext.getResources().getInteger(R.integer.NotificationID), notification);
}
}
謝謝!你的意思是,儘管我調用finish()來關閉活動,但系統只會將活動推到後臺並在將來發布它? – HelloCW
還有更多,是否有更好的方式來定義活動打開的方式? – HelloCW
我認爲你可以在你的Intent中使用action屬性的不同值。 – ivan