【问题标题】:Custom Notification自定义通知
【发布时间】:2010-06-21 14:59:00
【问题描述】:

我想知道是否有一种方法可以使用通知栏来执行某些操作(onClick),而无需启动/恢复活动。

例如..假设我提出了一个通知,当用户按下它时,它不会带我去一些活动,而是在我当前的活动/服务中调用一些常规方法

有没有办法实现这样的事情?

例如,当前的通知代码执行标准的 onClick 行为。运行一个活动..如何更改代码以调用某些方法而不是活动?

        messagesManager = (NotificationManager) 
               context.getSystemService(Context.NOTIFICATION_SERVICE);


    Notification notification = new Notification(R.drawable.icon, message,
            System.currentTimeMillis());
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            new Intent(context, someActivity.class), 0);
    notification.setLatestEventInfo(context, "notification", message,
            contentIntent);
    messagesManager.notify(R.string.noto, notification);

【问题讨论】:

    标签: android


    【解决方案1】:

    有没有办法实现这样的 东西?

    使用适当的PendingIntent。不要调用getActivity(),而是调用getService()getBroadcast()

    【讨论】:

    • getService 或 getBroadcast 如何帮助我调用常规方法?你能给我看一些这种待定意图的样本吗?
    • BroadcastReceiverService(相对于Activity)通过单击通知启动时,您可以“调用某些方法”。
    • 是的,但是我将如何在引发该通知的同一服务中调用一个方法(通过通知栏)?当从通知管理器调用 getService 时,它​​们是我可以在该服务中覆盖的任何方法吗(从那里我可以导航到我的目标方法)
    • “是的,但是我将如何在引发该通知的同一服务中调用一个方法(通过通知栏)?”您的Service 中的onStart() 或您的BroadcastReceiver 中的onReceive() 检测到PendingIntent 发送的Intent 并调用您想要的方法。
    • @Moshik:因为onStart() 被调用每次startService() 被调用。 onCreate() 只会在服务初始化时被调用一次。
    【解决方案2】:

    我认为这是不可能的,或者至少是最佳实践。当通知仍在顶部栏中等待时,Android 可能会终止您的活动。例如,您可能接到一个电话,但 Android 的 RAM 不足 - 它会扼杀您的活动,因此实际上不再存在“当前”活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多