zoukankan      html  css  js  c++  java
  • BroadcastReceiver中调用Service

    首先是代码:

    package com.larry.msglighter;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    import android.app.Activity;
    
    public class MyBroadcastReceiver extends BroadcastReceiver {
    
        // action 名称
        String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED" ;
     
        public void onReceive(Context context, Intent intent) {
     
           if (intent.getAction().equals( SMS_RECEIVED )) {
               // 相关处理 : 地域变换、电量不足、来电来信;
               Toast.makeText(context, "来短信了", Toast.LENGTH_LONG).show();
               
               Intent serIntent = new Intent();
               serIntent.setClass(context, ScreenService.class);
               context.startService(serIntent);
               
           }
        }
    }
    View Code

    用Intent的setClass方法在BroadcastReceiver的onReceive()方法中调用一个Service,第一个参数写成“MyBroadcastReceiver.this”是报错的,或许是因为这个intent是在

    public void onReceive(Context context, Intent intent) {}

    里面调用的,所以找不到this?

    解决办法是先把第一个参数改成context,  just like onReceive()的第一个参数;再把startService(serIntent);改成context.startService(serIntent);。

    神奇的context!到底啥意思。。先不讨论了!!

    ----------------------------------------

    另外是一个Intent写法的问题:

    这样写:

               Intent serIntent = new Intent();
               serIntent.setClass(context, ScreenService.class);
               context.startService(serIntent);

    与这样写:

          Intent serIntent = new Intent(context,ScreenService.class);
            context.startService(serIntent);

    目测是一个效果。

    先到这。

  • 相关阅读:
    测试工作效率低思考和改进
    Linux环境变量配置方法
    Linux上error while loading shared libraries问题解决方法
    PyCharm工具配置和快捷键使用
    Linux chattr和lsattr命令使用方法
    PuTTY工具配置和使用方法
    Python+AutoIt实现界面工具开发
    我对测试工作的一些认识
    Windows终端工具_MobaXterm
    Cygwin工具安装和使用指导书
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3421629.html
Copyright © 2011-2022 走看看