由于各种原因,我的应用会在通知栏中创建条目。当用户点击通知时,我想显示以特定格式显示条目的自定义活动。
Intent intent = new Intent(applicationContext, TextMessageViewerActivity.class);
intent.putExtra("text_message", someText);
PendingIntent contentIntent = PendingIntent.getActivity(applicationContext, 0, intent, 0);
// now create a notification and post it. no fancy flags
这一切都归结为通过Intent extra发送字符串,并在我的Activity中显示。发生的事情是,传递给我的Activity的第一个Intent以某种方式“卡住”,并且传递给它的所有其他Intent只显示第一个Intent的额外内容。
public class TextMessageViewerActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.text_viewer);
}
@Override
public void onResume()
{
super.onResume();
Intent startingIntent = getIntent();
String message = startingIntent.getStringExtra("text_message");
String displayMessage = message != null ? message : "No message found";
((TextView)findViewById(R.id.text_viewer_text_id)).setText(displayMessage);
}
}
我对Android Activity生命周期有何了解?
答案 0 :(得分:2)
我今天学到了新的东西:PendingIntent.getActivity
可能会为给定的PendingIntent
返回相同的Activity
。要为要发送的每个唯一PendingIntent
创建唯一Intent
,您必须在创建时指定PendingIntent.FLAG_ONE_SHOT
标记。
例如,上面代码中的PendingIntent创建行应该是:
PendingIntent contentIntent = PendingIntent.getActivity(applicationContext, 0, intent, PendingIntent.FLAG_ONE_SHOT);
答案 1 :(得分:0)
我认为您需要使用onNewIntent()
功能。它会更改您的Activity看到的意图。用法:
/**
* onResume is called immediately after this.
*/
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
resolveIntent(intent);
}
这里resolveIntent
用于实际处理新的传入意图。查看文档here。