如何点击通知上的当前活动前面?

时间:2012-01-30 12:03:59

标签: android notifications

当任何播放歌曲的音乐播放器点击其通知时,它会向我们显示曲目的当前位置,如何?

我正在创建一个应用程序,在这里我按下一个按钮并将其可见性设置为GONE,并在其位置出现另一个按钮,如ON / OFF按钮。当我按下ON时,通知出现ON按钮GONE和OFF按钮VISIBLE,之后我正在最小化运行应用程序。现在当我点击通知时,它必须显示我的应用程序的最后一个视图,其中OFF是可见的,ON是GONE而不是它,它再次启动屏幕,其中ON VISIBLE和OFF为GONE。

我使用此代码,

    String ns = Context.NOTIFICATION_SERVICE;
    mNm = (NotificationManager) getSystemService(ns);

    int icon = R.drawable.ic_launcher;        // icon from resources
    CharSequence tickerText = "my text";              // ticker-text
    long when = System.currentTimeMillis();         // notification time
    Context context = getApplicationContext();      // application Context
    CharSequence contentTitle = "my title";  // message title
    CharSequence contentText = "my message!";      // message text

    Intent notificationIntent = new Intent(Intent.ACTION_MAIN);

    notificationIntent.setClass(getApplicationContext(), DontTouchMyDroidActivity.class);
    contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | Notification.FLAG_AUTO_CANCEL);
            // the next two lines initialize the Notification, using the configurations above
    notification = new Notification(icon, tickerText, when);
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

1 个答案:

答案 0 :(得分:0)

你非常接近。您需要可以在Intent中传递数据。这有两个部分:

1)

当您创建您的Intent时,您需要为该意图添加额外数据。例如,您可以添加一个名为ON_VISIBLE的String,并将其设置为“true”。以下是一些代码,用于为您创建的意图添加额外内容:

    Intent notificationIntent = new Intent(this, DontTouchMyDroidActivity.class);
    notificationIntent.putExtra("ON_VISIBLE", "true");
    notificationIntent.putExtra("SOME_OTHER_DATA", "look at help for putExtra()");

这会将Bundle的额外信息添加到Intent(在BundleIntent.putExtras()上寻求帮助)

2)

当您接收您的Intent时,您需要从中提取该信息。以下是从Bundle中取出Intent的一些代码。然后,您可以使用这些值来确定是否要显示或隐藏按钮。

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // retrieve bundle extras passed into this intent
    String onButtonVisible = "false";
    Bundle extras = getIntent().getExtras();
    if (extras != null)
    {
        onButtonVisible = extras.getString("ON_VISIBLE");
    }

    Boolean makeVisible = Boolean.valueOf(onButtonVisible);
    if (makeVisible)
    {
        // make your ON button visible
    }
}

如果您正在创建Activity,则会调用此方法。

如果您的Activity在后​​台还活着,那么您需要在Activity.onNewIntent(Intent intent)

方法中执行类似的操作
/** Called if activity is being brought in from background by a new intent. */
@Override
protected void onNewIntent(Intent intent)
{
    Bundle extras = intent().getExtras();
    if (extras != null)
    {
        onButtonVisible = extras.getString("ON_VISIBLE");
    }

    // do something similar here
}

所以简短的回答是你在创建Intent时添加了“额外内容”。这些“额外内容”会添加到Bundle,然后您可以在Activity启动时进行查询。而且,要知道有两种方法需要了解可以查询附加内容的位置。

关于Intent,extras,Bundle的一些谷歌搜索应该填写我遗漏的任何信息。