Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 在BroadcastReceiver的子类中从未调用onReceive_Java_Android_Notifications - Fatal编程技术网

Java 在BroadcastReceiver的子类中从未调用onReceive

Java 在BroadcastReceiver的子类中从未调用onReceive,java,android,notifications,Java,Android,Notifications,我对Android真的很陌生,我想创建一个带有取消按钮的通知。代码如下: public class MainActivity extends ActionBarActivity implements OnItemClickListener { ...stuff here... void myMethod() { Intent buttonIntent = new Intent(this, NotificationButtonReceiver.cl

我对Android真的很陌生,我想创建一个带有取消按钮的通知。代码如下:

public class MainActivity extends ActionBarActivity implements OnItemClickListener
{
    ...stuff here...

    void myMethod()
    {
         Intent buttonIntent = new Intent(this,    NotificationButtonReceiver.class);
         buttonIntent.putExtra("notificationId", 8);

         PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);

         Notification.Builder builder = new Notification.Builder(this)
                .setStyle(new Notification.BigTextStyle().bigText("lorem ipsum dollom"))
                .setAutoCancel(false)
                .setContentTitle("BigText")
                .setContentText("Hello from BigText")
                .setSmallIcon(R.drawable.like)
                .addAction(R.drawable.abc_btn_radio_material, "Dismiss", btPendingIntent);

         Notification notif = builder.build();
         NotificationManager manager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

         manager.notify(8, notif);
    }

    ...stuff here...
}

public class NotificationButtonReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) {

        int notificationId = intent.getIntExtra("notificationId", 0);

        Toast.makeText(context.getApplicationContext(), "received",
                Toast.LENGTH_SHORT).show();

        NotificationManager manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        manager.cancel(notificationId);
    }
}
调用名为
myMethod
的方法被成功调用,但从未调用过方法
onReceive
,尽管我单击了按钮
dismise


有什么建议吗

当您使用BroadCastReceiver时,您需要注册(@Harsh)

这是你需要做的

在清单的
应用程序
标记中添加以下代码

    <receiver android:name="your.package.name.NotificationButtonReceiver">
        <intent-filter>
            <action android:name="notify_dismiss" />
        </intent-filter>
    </receiver>

NotificationButtonReceiver是否已在应用程序中注册?如果是在哪里注册的?接收器有广播吗?谢谢!你的评论帮助了我,也帮助了巴拉特的回答!
    Intent buttonIntent = new Intent("notify_dismiss");
    buttonIntent.putExtra("notificationId", 8);

    PendingIntent btPendingIntent = PendingIntent.getBroadcast(this, 0, buttonIntent,0);