最近、私はこれらの2つの質問と、それぞれがそれぞれの対応する通知から文字列を取得する独自のアクティビティを持つ複数の通知を試みる問題を解決するために細心の注意を払っています。現在のソリューションは、一つのキーの問題を除いて動作しますほとんどの部分について通知テキストをアクティビティに送信します。問題
How to pass text from notification to another activity? How to send parameters from a notification-click to an activity?
: アプリケーションが開いていない、と私は2つの異なる通知を受信する場合。私は通知の詳細アクティビティを開くためにクリックします。アクティビティのテキストは正常に更新されます。しかし、同じアクティビティを維持しながら、私は2番目の通知をクリックし、何も起こりません。
アプリケーションが開いているとき、このソリューションは正常に動作します。 2つの異なる通知テキストビューを持つ2つの別個のインテントを開きます。アプリケーションが閉じられていて、最初の通知ビューの詳細アクティビティから抜け出し、2番目の通知ビューを開くと、ソリューションが正常に実行されます。
ご協力いただければ幸いです!ここで
が私のコードです:
MainActivityクラス
private NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
public void setAlarm1(View view){
Toast.makeText(getApplicationContext(),"Setting Alarm 5 seconds",Toast.LENGTH_SHORT).show();
//this is 5 seconds
long alertTime = new GregorianCalendar().getTimeInMillis();
alertTime += 5*1000;
Intent alertIntent = new Intent(this,AlertReceiver.class);
alertIntent.putExtra("msg","This is msg for 5 seconds");
alertIntent.putExtra("msgText","This is msgText for 5 seconds");
alertIntent.putExtra("msgAlert","This is msgAlert for 5 seconds");
alertIntent.putExtra("notifyID",1);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,alertTime,
PendingIntent.getBroadcast(this,1,alertIntent,
0));
}
public void setAlarm2(View view){
Toast.makeText(getApplicationContext(),"Setting Alarm 10 seconds",Toast.LENGTH_SHORT).show();
//this is 5 seconds
long alertTime = new GregorianCalendar().getTimeInMillis();
alertTime += 10*1000;
Intent alertIntent = new Intent(this,AlertReceiver.class);
alertIntent.putExtra("msg","This is msg for 10 seconds");
alertIntent.putExtra("msgText","This is msgText for 10 seconds");
alertIntent.putExtra("msgAlert","This is msgAlert for 10 seconds");
alertIntent.putExtra("notifyID",2);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,alertTime,
PendingIntent.getBroadcast(this,2,alertIntent,
0));
}
AlertReceiverクラス
public class AlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
createNotification(context, intent.getStringExtra("msg"), intent.getStringExtra("msgText"), intent.getStringExtra("msgAlert"), intent.getIntExtra("notifyID",999));
}
public void createNotification(Context context, String msg, String msgText, String msgAlert, int notifyID){
Intent intent = new Intent(context, MoreInfoNotification.class);
intent.putExtra("msg",msg);
intent.putExtra("msgText",msgText);
intent.putExtra("msgAlert",msgAlert);
// had this below line of code but made problems worse
// intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent notificIntent = PendingIntent.getActivity(context, notifyID,
intent,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
style.setBigContentTitle(msg);
style.bigText(msgText);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentTitle(msg);
builder.setContentText(msgText);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setTicker(msgAlert);
builder.setStyle(style);
builder.setContentIntent(notificIntent);
builder.setDefaults(NotificationCompat.DEFAULT_SOUND);
builder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(notifyID,builder.build());
}
}
MoreInfoNotificationクラス
public class MoreInfoNotification extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onNewIntent(getIntent());
}
@Override
public void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
Bundle extras = getIntent().getExtras();
if(extras != null){
setContentView(R.layout.activity_more_info_notification);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mTextView = (TextView)findViewById(R.id.textView);
String totalString = "";
if(extras.containsKey("msg")){
totalString += extras.getString("msg");
}
if(extras.containsKey("msgText")){
totalString += ", " + extras.getString("msgText");
}
if(extras.containsKey("msgAlert")){
totalString += ", " + extras.getString("msgAlert");
}
mTextView.setText(totalString);
}
}
}