qq_36753343
2017-04-22 09:15
采纳率: 66.7%
浏览 2.4k

通过广播接受器开机启动一个服务 为什么还要在onReceive()方法中判断是不是开机广播?

代码在图片里
if (intent.getAction().equals(action_boot)){
这句代码是不是多余的?画蛇添足图片图片

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • RoidCoder 2017-04-23 14:13
    已采纳

    嗯,可以不加判断,因为你只配置了一个action

    打赏 评论
  • 随风飘扬的smile 2017-04-23 12:01

    是多余的,但是如果清单文件中有多个Action的话,就要判断了,比如:SD卡状态发生变化



    public class SDCardReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
    
        if (action.equals("android.intent.action.MEDIA_UNMOUNTABLE")) {
            Toast.makeText(context, "SD卡未挂载", Toast.LENGTH_LONG).show();
        }else if (action.equals("android.intent.action.MEDIA_MOUNTED")) {
            Toast.makeText(context, "SD卡正常运行", Toast.LENGTH_LONG).show();
        }else if (action.equals("android.intent.action.MEDIA_REMOVED")) {
            Toast.makeText(context, "SD卡被拔出", Toast.LENGTH_LONG).show();
        }
    }
    

    }

    打赏 评论
  • 这句代码**不是多余**的,因为虽然你的Reciever只注册了一个广播,这并不代表别动广播收不到。可以通过
    Intent intent = new Intent("android.btopp.intent.action.Hide");
    intent.setClassName(包名,类名)。
    mContext.sendBroadcast(intent);
    这样也会收到该广播(系统应用Bluetooth就是这样做的)。如果不判断不就有问题了吗。

    打赏 评论

相关推荐 更多相似问题