0

Leanback Launcher を使用した Android TV でのおすすめ (通知) の管理に問題があります。

ここで Google サンプルを使用して独自の実装を行います: https://github.com/googlesamples/androidtv-Leanback

期待される結果 :

  • 私は自分のアクティビティ「MainActivity」にいます(Webビューを使用)
  • HOME を押すと、Leanback ランチャーが表示され、地雷が含まれていることが推奨されます。
  • 私はそれらの1つを押します
  • 新しいエクストラを使用して新しいインテントで再作成せずに、アクティビティ「MainActivity」を再開します。

実際には、アクティビティをリロードせずにアクティビティを再開すると、 PendingIntent の作成の下で正常に動作します。

private PendingIntent buildPendingIntent(Parcelable media, int id) {
        Intent detailsIntent = new Intent(this, MainActivity.class);
        detailsIntent.putExtra("media", media);
        detailsIntent.putExtra("id", id);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(detailsIntent);

        return stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
}

現在の結果:

  • 私は自分のアクティビティ「MainActivity」にいます(Webビューを使用)
  • HOME を押すと、Leanback ランチャーが表示され、地雷が含まれていることが推奨されます。
  • 私はそれらの1つを押します
  • 私のアクティビティは、extrat インテント値で「onNewIntent」イベントを受け取ります。私は常に同じメディアを持っています。

Google がサンプル コードのコメントで次のように述べているため、このソリューションは機能しません。

// Ensure a unique PendingIntents, otherwise all recommendations end up with the same 
// PendingIntent

detailsIntent.setAction(movie.getId());

したがって、すべての推奨事項を区別するには、ID を使用してアクションを設定する必要があります。そうしないと、アクティビティに送信される最後のペンディング インテントになります。それが私の現在の動作です。「onNewIntent」では常に同じ「メディア」と「id」をインテント(最後のもの)で受け取ります。どの推奨事項をクリックしても、常に同じインテントを取得します。

しかし、「id」を使用してアクションを設定すると、アクティビティ「MainActivity」が再作成されるため、再開が失敗し、webview のコンテキストがクリアされ、webview がリロードされます :(追加のインテント値。

私が望む動作をするのに役立つ解決策はありますか?

質問を簡単にするために、アクティビティをリロードせずに、適切な保留中の意図を持つ推奨事項からアクティビティ B を再開するにはどうすればよいですか?

よろしくお願いいたします。

4

1 に答える 1

0

解決策を見つけました。私はそれが良いものだとは思いませんが、私の場合はうまくいきます。

PendingIntent pIntent = PendingIntent.getActivity(this, id, detailsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
return pIntent;

したがって、「resquetCode」に id を設定すると、Android はそれが別のアクティビティであると認識し、新しいアクティビティを再作成せずに再開します。

于 2015-12-08T16:41:40.950 に答える