Android - 做点击通知吗?

时间:2016-04-26 12:42:48

标签: android notifications

当用户打开应用程序时,如果我在没有打开活动的情况下按下通知,我怎么能处理特定的方法?

Intent intent = new Intent(this, MainActivity.class);
                intent.putExtra("frame", 1);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

mBuilder.setContentIntent(contentIntent);

4 个答案:

答案 0 :(得分:3)

你问如何从意图中读取你的额外内容?您应该在活动中实现onNewIntent()并在那里处理传入的Intent。如果你有更多处理意图内容的代码,那么最好将它作为单独的方法:

@Override
public void onCreate(Bundle savedState)
{
    super.onCreate(savedState);
    dealWithIntentData(getIntent());
}

@Override
protected void onNewIntent(Intent intent) 
{
  super.onNewIntent(intent);
  dealWithIntentData(intent); 
}

protected void dealWithIntentData(Intent intent) {
   ...
}

答案 1 :(得分:0)

您可以根据需要创建不同的PendingIntent。在您的代码段中,您通过调用

开始活动
PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);

您可以通过致电开始服务 PendingIntent.getService(),或通过致电PendingIntent.getBroadcast()

发送广播

更具体地说,如果您不想依赖任何活动,请尝试发送广播(使用getBroadcast)并在Broadcast的onReceive()上执行任何逻辑

更多信息@ http://developer.android.com/reference/android/app/PendingIntent.html

答案 2 :(得分:0)

我不完全理解你的问题,但也许你想制作一个广播接收器&处理一些动作吗? 您可以使用PendingIntent.getBroadcast方法。 因此,使用广播,您可以从接收器开始活动,或者,如果接收器在内部活动,则处理某些事情

答案 3 :(得分:0)

Intent intent = new Intent(this, MainActivity.class);
            intent.putExtra("frame", 1);
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);


@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    int frame = intent.getIntExtra("frame", 0);
    // TODO your code...
}