Android TV - 推荐(通知)不会自动取消

时间:2014-12-16 18:09:03

标签: android android-5.0-lollipop android-tv

在Android TV上的Lollipop中创建推荐(或通知)时,我无法让它自动取消。

我正在使用" NotificationCompat.BigPictureStyle"正如Android TV开发者页面中所推荐的那样。通知按设计工作,按预期触发PendingIntent,但不会自动取消并从推荐栏中消失。建议的第二个选择会显示一个空白屏幕,因此我猜PendingIntent在此时为空。 (ADB在第二次调用时显示android.content.IntentSender $ SendIntentException。)

在Nexus播放器和Android TV模拟器上测试。

private void buildAndroidTVRecommendation(String name, PendingIntent pIntent,
        Context context2, Bundle extras) {

     NotificationManager mNotificationManager = (NotificationManager)
             context2.getSystemService(Context.NOTIFICATION_SERVICE);
     Bitmap smallBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.air_share);

    Notification notification = new NotificationCompat.BigPictureStyle(
            ( new NotificationCompat.Builder(context)
                    .setContentTitle("Air-Share - incoming share")
                    .setContentText("From: "+name)
                    .setContentInfo("Air-Share"))
                    .setGroup("Air-Share")
                    .setColor(0xFFFF2020)
                    .setCategory(Notification.CATEGORY_RECOMMENDATION)
                    .setLargeIcon(smallBitmap)
                    .setSmallIcon(R.drawable.air_share)
                    .setContentIntent(pIntent)
                    .setExtras(extras)
                    .setAutoCancel(true)

                    )
            .build();

    mNotificationManager.notify(pendingCounter, notification);
    mNotificationManager = null;


}

1 个答案:

答案 0 :(得分:0)

为了达到这个目的,我已经创造了一个解决这个问题的方法。

我创建了一个新活动,其唯一目的是从建议书中接收待定意图。 我改变了建议的原始Pending Intent来调用这个新活动而不是我想要的活动。 (所需的活动在我的应用程序之外。)在Extras中,我将我需要知道的所有内容捆绑到我原来想要的意图以及通知ID。 当新活动启动时(在用户点击推荐之后),我提取ID并取消推荐。然后我提取所需意图的信息,创建意图并最终完成活动。

public class TVRecommendationActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent in = (Intent) getIntent();
        String jsonString = in.getStringExtra("jsonString");
        String fileUri = in.getStringExtra("fileUri");

        int id  =in.getIntExtra("notificationID", -1);

        NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        if (id >= 0 ) nm.cancel(id);

        JSONIntent newIntent = new JSONIntent(getApplicationContext());
        newIntent.setIncomingLocalFileURI(fileUri);
        Intent out = newIntent.buildIntentFromJSON(jsonString, fileUri);

        if (out != null) startActivity(out);
        finish();
    }

}