【问题标题】:start an application from notification bar in android从android中的通知栏启动应用程序
【发布时间】:2011-01-31 10:16:33
【问题描述】:

我有一个应用程序,我想在我的应用程序运行时向通知栏显示我的应用程序图标,并且我还希望用户单击通知栏中的我的应用程序图标时 我的应用程序将打开。这个怎么做?请帮忙!

【问题讨论】:

    标签: android


    【解决方案1】:

    要创建状态栏通知,请在您的 onCreate 方法中执行此操作:

    1. 获取对 NotificationManager 的引用:

        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
      
    2. 实例化通知:

        int icon = R.drawable.notification_icon;
        CharSequence tickerText = "Hello";
        long when = System.currentTimeMillis();
      
        Notification notification = new Notification(icon, tickerText, when);
      
    3. 定义通知的扩展消息和意图:

        Context context = getApplicationContext();
        CharSequence contentTitle = "My notification";
        CharSequence contentText = "Hello World!";
        Intent notificationIntent = new Intent(this, MyClass.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
      
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
      
    4. 将通知传递给 NotificationManager:

        private static final int HELLO_ID = 1;
      
        mNotificationManager.notify(HELLO_ID, notification);
      

      就是这样。您的用户现已收到通知。

    【讨论】:

    【解决方案2】:

    已接受的答案已弃用。这是显示对话框的方法,来自 google 的 documentation。

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable
                .logo_listy).setContentTitle("My notification").setContentText("Hello World!");
    
        Intent resultIntent = new Intent(this, ResultActivity.class);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(ResultActivity.class);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
    
        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(0, mBuilder.build());
    

    【讨论】:

    • 效果很好。可能有助于某人使其成为“持续”通知: Notification noti = mBuilder.build(); noti.flags = Notification.FLAG_ONGOING_EVENT;
    • 如何设置每 2 分钟触发一次通知?
    【解决方案3】:

    一些建议:

    • 如果你想要通知栏中的图标,你必须发送一些通知。
    • 无法通过单击通知图标启动应用程序。它可以通过点击通知来启动,如果用户下拉通知栏将可用。为此,您需要创建 PendingIntent。

    【讨论】:

      【解决方案4】:

      您需要发布带有待处理意图的通知,其中包含启动应用的意图。 请参阅http://developer.android.com/guide/topics/ui/notifiers/notifications.html 了解一般如何操作,http://javablogs.com/Jump.action?id=628173 了解您可能陷入的陷阱。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多