Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行Notification.addAction()中的函数,而不是PendingEvent。可能吗?_Java_Android_Notifications_Android Notifications - Fatal编程技术网

Java 执行Notification.addAction()中的函数,而不是PendingEvent。可能吗?

Java 执行Notification.addAction()中的函数,而不是PendingEvent。可能吗?,java,android,notifications,android-notifications,Java,Android,Notifications,Android Notifications,我希望在按下通知按钮时执行一个方法。为此,我在通知中添加了一个带有pendingent的操作: Intent intent = new Intent(context, AlertActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); Notification notification = new Notification.Builder(MainActivi

我希望在按下通知按钮时执行一个方法。为此,我在通知中添加了一个带有
pendingent
的操作:

Intent intent = new Intent(context, AlertActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

Notification notification = new Notification.Builder(MainActivity.this)
                    .setContentTitle("New Notification")
                    .setContentText("Click Here")
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentIntent(pendingIntent)
                    .addAction(R.mipmap.ic_launcher, "Test2", pendingIntent)
                    .build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, notification);
这是可行的,但是我不想在用户调用操作时启动
活动。我只是需要做些工作

为此,我实现了一个
服务
,应该由
pendingent
作为目标:

public class MyServices extends IntentService {
    public MyServices() {
        super("MyServices");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        clearNotification();
    }

    public void clearNotification() {
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.cancel(0);
        Intent intent = new Intent(MyServices.this, MainActivity.class); 
//Starting new activity just to check
        startActivity(intent);
    }
}
我创建了
pendingent
,如下所示:

final Intent intent = new Intent(context, MyServices.class);
final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

但是,当我调用通知上的操作时,什么也没有发生。我做错了什么?

通知不是应用程序的一部分。它由操作系统管理。碰巧有一些API可以用来显示/取消/etc通知

挂起的意图允许外部代码(例如通知)启动应用程序/活动/服务/广播接收器。如果没有挂起的意图,这是无法实现的

我的任务是在单击特定操作按钮时执行一些代码,并清除通知;没有开始任何活动


你不必开始一项活动。您可以在没有UI的broadcastreceiver中执行此操作。或者,正如Commonware所建议的那样,使用IntentService,这取决于您在“代码段”中所做的工作。IntentService在单独的线程中处理工作。

通知不是应用程序的一部分。它由操作系统管理。碰巧有一些API可以用来显示/取消/etc通知

挂起的意图允许外部代码(例如通知)启动应用程序/活动/服务/广播接收器。如果没有挂起的意图,这是无法实现的

我的任务是在单击特定操作按钮时执行一些代码,并清除通知;没有开始任何活动



你不必开始一项活动。您可以在没有UI的broadcastreceiver中执行此操作。或者,正如Commonware所建议的那样,使用IntentService,这取决于您在“代码段”中所做的工作。IntentService在单独的线程中处理工作。

不,这是不可能的。挂起的内容有什么问题?你知道你可以用一个
PendingIntent
启动其他组件,而不仅仅是活动,对吗?只需使用
服务
。我希望在执行某些代码时不实际启动任何活动(或向用户显示任何内容)。比如,假设通知上说;“正在下雨吗?”操作按钮1:是操作按钮2:否。单击“是”时,引导用户进行某些活动。单击“否”时,清除通知并执行一小段代码,因此不要启动活动。有什么问题吗?只需启动一个
服务
广播接收器
即可。另外,对于通知来说,这将是一个非常奇怪的用例,我不建议您在应用程序中包含任何类似的通知……不,这是不可能的。挂起的内容有什么问题?你知道你可以用一个
PendingIntent
启动其他组件,而不仅仅是活动,对吗?只需使用
服务
。我希望在执行某些代码时不实际启动任何活动(或向用户显示任何内容)。比如,假设通知上说;“正在下雨吗?”操作按钮1:是操作按钮2:否。单击“是”时,引导用户进行某些活动。单击“否”时,清除通知并执行一小段代码,因此不要启动活动。有什么问题吗?只需启动一个
服务
广播接收器
。这对于通知来说也是一个非常奇怪的用例,我不建议您在应用程序中包含任何类似的通知……甚至更好:在
IntentService
中执行,如果要做的工作将需要超过一毫秒左右。但当我单击“否”时,什么也没有发生button@AseedUsmani编辑您的问题,不要在评论中发布代码。现在,我已经为您编辑了您的问题。@AseedUsmani,并定义“什么都没发生”。您是否调试了
服务
?真的不叫吗??日志中是否没有解释发生了什么的条目?请注意:活动不一定需要向用户显示某些内容。您可以从挂起的意图启动活动,在onCreate中完成所有工作而不设置布局,最后在完成后调用活动的finish。将“@android:style/Theme.Translucent.NoTitleBar”添加到活动的样式中,用户将不会注意到任何内容。更好的方法是:在
IntentService
中执行此操作,前提是要完成的工作将花费超过毫秒。但是,当我单击“否”时,不会发生任何事情button@AseedUsmani编辑您的问题,不要在评论中发布代码。现在,我已经为您编辑了您的问题。@AseedUsmani,并定义“什么都没发生”。您是否调试了
服务
?真的不叫吗??日志中是否没有解释发生了什么的条目?请注意:活动不一定需要向用户显示某些内容。您可以从挂起的意图启动活动,在onCreate中完成所有工作而不设置布局,最后在完成后调用活动的finish。将“@android:style/Theme.Translucent.NoTitleBar”添加到活动的样式中,用户将不会注意到任何内容。