单击通知后警报管理器不会关闭
Alarm manager do not dismiss after notification click
我已经找到了所有的警报管理器代码,但我没能看到我的错误在哪里
我想要实现的是,当我打开应用程序时,它会执行主程序中的代码并设置警报管理器计时器弹出通知,但是当我关闭应用程序并等待弹出窗口出现时没有显示,但是当我再次启动应用程序时,通知出现了
当我单击任务栏中的通知时,它不会消失,它会将我发送到我的主 activity,没关系,但任务栏中的通知不会被破坏:(
这是我的代码
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,1);
calendar.set(Calendar.MINUTE,12);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(getApplicationContext(),Notification_reciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
}
}
这是我的通知接收者
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
/**
* Created by Usuario on 01/05/2016.
*/
public class Notification_reciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context,MainActivity.class);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context,100,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle("GIOTON")
.setContentText("Prueba de notificaciones")
.setAutoCancel(true);
notificationManager.notify(100,builder.build());
}
}
使用 Broadcast Receiver 按 Id 取消通知。
Intent startIntent = new Intent( 上下文,
NotificationClickReciever.class );
在创建意图时使用通知点击接收器。
下面是关闭通知的代码 -
public static void cancelNotification( Context ctx, int notifyId ) {
String s = Context.NOTIFICATION_SERVICE;
NotificationManager mNM = ( NotificationManager ) ctx.getSystemService( s );
mNM.cancel( notifyId );
enter code here
}
我已经找到了所有的警报管理器代码,但我没能看到我的错误在哪里
我想要实现的是,当我打开应用程序时,它会执行主程序中的代码并设置警报管理器计时器弹出通知,但是当我关闭应用程序并等待弹出窗口出现时没有显示,但是当我再次启动应用程序时,通知出现了
当我单击任务栏中的通知时,它不会消失,它会将我发送到我的主 activity,没关系,但任务栏中的通知不会被破坏:(
这是我的代码
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,1);
calendar.set(Calendar.MINUTE,12);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(getApplicationContext(),Notification_reciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
}
}
这是我的通知接收者
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
/**
* Created by Usuario on 01/05/2016.
*/
public class Notification_reciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context,MainActivity.class);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context,100,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle("GIOTON")
.setContentText("Prueba de notificaciones")
.setAutoCancel(true);
notificationManager.notify(100,builder.build());
}
}
使用 Broadcast Receiver 按 Id 取消通知。
Intent startIntent = new Intent( 上下文, NotificationClickReciever.class ); 在创建意图时使用通知点击接收器。
下面是关闭通知的代码 -
public static void cancelNotification( Context ctx, int notifyId ) {
String s = Context.NOTIFICATION_SERVICE;
NotificationManager mNM = ( NotificationManager ) ctx.getSystemService( s );
mNM.cancel( notifyId );
enter code here
}