как вывести текущую активность на уведомление по нажатию? - PullRequest
0 голосов
/ 30 января 2012

Когда любой музыкальный проигрыватель, воспроизводящий песню, щелкнет по ее уведомлению, он покажет нам текущую позицию треков, как?

Я создаю приложение, здесь я нажал на одну кнопку, и ее видимость установилась на GONE, а на ее месте появилась другая кнопка, похожая на кнопку ON / OFF. когда я нажимал ON, появлялись уведомления ON, кнопка GONE и кнопка OFF VISIBLE, после этого я свернул запущенное приложение. Теперь, когда я нажал на уведомление, оно должно показать мой последний вид приложения, где ВЫКЛЮЧЕНО ВИДИМО, ВКЛЮЧЕНО вместо него, снова запускается экран, где ВКЛЮЧЕНО ВИДЕНИЕ и ВЫКЛЮЧЕНО ВЫКЛЮЧЕНО.

Я использовал этот код для этого,

    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 голосов
/ 31 января 2012

Вы очень близки.Вам нужно передать данные в ваш Intent.Это состоит из двух частей:

1)

Когда вы создаете свой Intent, вы добавляете дополнительные данные для этого намерения.Например, вы можете добавить String с именем ON_VISIBLE и установить для него значение "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 (обратитесь за помощью к Bundle & Intent.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.А также, чтобы знать, что есть 2 метода, о которых вы должны знать, где вы можете запросить дополнительные материалы.

Немного Googling on Intent, дополнительные функции, Bundle, должны заполнить любую информацию, которую я пропустил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...