Android通知栏微技巧,通知栏按钮变得不那么敏感
来源:互联网 发布:经传软件三板斧 编辑:程序博客网 时间:2024/05/22 10:23
Android通知栏,应始终可见。通知栏有2个按钮,其中第一个是抓一些数据存储和第二个开放活动,将显示所有的数据。我遇到了一个问题,当我关闭应用程序,然后按通知按钮开始活动,活动开始后,我通知按钮停止响应。需要注意的是按键做工精细前点所在的第二按钮点击开始活动。
这里是一个模板代码为我的通知服务和通知栏按钮处理程序
服务处理的通知栏
类处理按钮按下通知栏
最后,我终于解决了这个问题,我在改变,我处理按键的方式。这是我现在的工作。
在NotificationBarService,可以这样处理按钮
然后我收到广播甚至和处理这样的
原文地址:android开发http://www.apkbus.com/blog-927916-76546.html
这里是一个模板代码为我的通知服务和通知栏按钮处理程序
服务处理的通知栏
``` public class NotificationBarService extends Service { private int notificationID; @Override public IBinder onBind(Intent intent){ return null; } @Override public int onStartCommand(Intent intent, int flags, int startId){ notificationID = new Random().nextInt(); RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); contentView.setTextViewText(R.id.title, "Custom notification"); contentView.setTextViewText(R.id.text, "This is a custom layout"); //Handle the button for showing bookmarks on custom notification Intent buttonsIntent2 = new Intent(this, NotificationBarButtonActivityHandler.class); buttonsIntent2.putExtra(PENDING_ACTION, SHOW_BOOKMARKS); contentView.setOnClickPendingIntent(R.id.notificationBarShowBookmarksButton, PendingIntent.getActivity(this, 0, buttonsIntent2, 0)); //Handle the button for adding bookmark on custom notification Intent buttonsIntent = new Intent(this, NotificationBarButtonActivityHandler.class); buttonsIntent.putExtra(PENDING_ACTION, REGISTER_BOOKMARK); contentView.setOnClickPendingIntent(R.id.notificationBarAddBookmarkFromChromeButton, PendingIntent.getActivity(this, 1, buttonsIntent, 0)); RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.custom_notification); Intent switchIntent = new Intent(this, NotificationBarService.class); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, 0); notificationView.setOnClickPendingIntent(R.id.notificationBarShowBookmarksButton, pendingSwitchIntent); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setContent(contentView) .setSmallIcon(R.drawable.notification_small_icon) .setOngoing(true); Notification notification = mBuilder.build(); startForeground(notificationID, notification); return START_STICKY; } @Override public void onDestroy(){ super.onDestroy(); stopForeground(true); } }```
类处理按钮按下通知栏
``` public class NotificationBarButtonActivityHandler extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String action = (String) getIntent().getExtras().get(NotificationBarService.PENDING_ACTION); if (action != null) { if (action.equals(NotificationBarService.REGISTER_BOOKMARK)){ CustomLogger.log("---------------- BUTTON FOR COLLECT DATA WAS PRESSED!!!"); //Does something here } else if(action.equals(NotificationBarService.SHOW_BOOKMARKS)){ CustomLogger.log("---------------- BUTTON FOR SHOW DATA WAS PRESSSED!!!"); //Notification bar buttons start not responding right after //this is executed. Note that this problem only occurs if I close the app //and press the notification button to execute this code. //Otherwise this works just fine. Intent intent2; intent2 = new Intent(this, BookmarkDisplayActivity.class); startActivity(intent2); } } finish(); }}```
最后,我终于解决了这个问题,我在改变,我处理按键的方式。这是我现在的工作。
在NotificationBarService,可以这样处理按钮
```Intent addBookmarkIntent = new Intent(this, NotificationBarButtonListener.class); addBookmarkIntent.setAction(ADD_BOOKMARK_ACTION); PendingIntent pendingAddBookmarkIntent = PendingIntent.getBroadcast(this, 0, addBookmarkIntent, 0); contentView.setOnClickPendingIntent(R.id.notificationBarAddBookmarkFromChromeButton, pendingAddBookmarkIntent); Intent showBookmarkIntent = new Intent(this, NotificationBarButtonListener.class); showBookmarkIntent.setAction(SHOW_BOOKMARK_ACTION); PendingIntent pendingShowBookmarkIntent = PendingIntent.getBroadcast(this, 0, showBookmarkIntent, 0); contentView.setOnClickPendingIntent(R.id.notificationBarShowBookmarksButton, pendingShowBookmarkIntent); ```
然后我收到广播甚至和处理这样的
``` public static class NotificationBarButtonListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if(action.equals(ADD_BOOKMARK_ACTION)){ CustomLogger.log("---------------- BUTTON FOR REGISTER BOOKMARK WAS PRESSED!!! "); } else if(action.equals(SHOW_BOOKMARK_ACTION)){ CustomLogger.log("---------------- BUTTON FOR SHOW BOOKMARK WAS PRESSSED!!!"); } } }```
原文地址:android开发http://www.apkbus.com/blog-927916-76546.html
阅读全文
0 0
- Android通知栏微技巧,通知栏按钮变得不那么敏感
- Android通知栏通知
- Android通知栏Notification微技巧
- Android通知栏的微技巧
- android 通知栏添加按钮点击效果
- android 通知栏如何更新图片、按钮
- android通知栏区分多通知消息
- android通知栏通知的开发笔记
- Android通知栏点击通知消失
- Android创建并更新通知栏通知
- android通知栏的消息通知(Notification)
- 一个带按钮的自定义Android通知栏DEMO
- 通知栏通知Notification
- Notification 通知栏通知
- Notification通知栏通知
- 通知栏通知
- 安卓学习笔记---Android通知栏微技巧,通知栏图标在sdk21以上及以下的区别
- android通知栏进度条
- 分析系统运行状态
- JSP的session对象
- Go面向对象编程之初始化
- session的生命周期
- JSP的page对象
- Android通知栏微技巧,通知栏按钮变得不那么敏感
- Linux分析操作系统磁盘容量
- 学习笔记(一):如何选择合适的算法
- [前端]input框 type="radio"显示不出
- JSP的application对象
- CNN卷积神经网络
- 利用shell监控mysql
- 带有侧滑菜单的+ 通过retrofit获取数据,通过fresco框架加载图片,使用TabLayout + ViewPage + Fragment + ListView 显示数据
- nginx应用状态分析