您的位置:首页 > 其它

广播的一些基本用法

2017-02-07 22:10 316 查看
      

          静态广播与动态广播

       具体用法:在安卓软件中静态广播都可以接受发送广播的信息,动态广播软件中它后台关闭后,是不可以接受广播的消息

-------------发送广播

public class MainActivity extends AppCompatActivity {

private EditText et_main_content;

    private Intent intent;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        et_main_content= (EditText) findViewById(R.id.et_main_content);

        intent=new Intent();

//主要写广播的名字,否则不能接受广播

        //设置广播的名字

        intent.setAction("com.example.g0831_android20_sender.599");

    }

    public void send(View view){

     String content=et_main_content.getText().toString();

// intent传值

    intent.putExtra("con",content);

        //发送广播(无序广播)

//      sendBroadcast(intent);

    

}

}

-------------(静态广播)接收广播

   先在AndroidManifest中配置

 <!--配置广播接受者:

       1.在清单文件中配置(静态广播)

       2.使用java 代码(动态广播)

       -->

<receiver android:name=".Myreceice_nian">

    <intent-filter>

    <action android:name="com.example.g0831_android20_sender.599"></action>

    </intent-filter>

</receiver>

-----Java代码写

public class Myreceice02 extends BroadcastReceiver{

    @Override

    public void onReceive(Context context, Intent intent) {

        if("com.example.g0831_android20_sender.599".equals(intent.getAction())){

        String con=intent.getStringExtra("con");

        Log.i("test","i号接受者:"+con);

    }

}

}

-------------(动态广播)接收广播可以用黏性广播

****也需要在 先在AndroidManifest中配置和静态广播一样

public class Myreceice_nian extends BroadcastReceiver{

    @Override

    public void onReceive(Context context, Intent intent) {

        if("com.example.g0831_android20_sender.599".equals(intent.getAction())){

        String con=intent.getStringExtra("con");

        Log.i("test","粘性号接受者:"+con);

    }

}

}

//需要配置(动态注册广播需要onResume)

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        nian=new Myreceice_nian();

        intentFilter=new IntentFilter();

        intentFilter.addAction("com.example.g0831_android20_sender.599");

    }

//动态注册广播需要onResume

    @Override

    protected void onResume() {

        super.onResume();

        //注册广播

        registerReceiver(nian,intentFilter);

    }

  //注销动态广播必须写

    @Override

    protected void onDestroy() {

        super.onDestroy();

        //注销动态广播

        unregisterReceiver(nian);

    }

-------------------------------------------系统广播

先在AndroidManifest中配置

  <!--读取电话状态权限-->

    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

  <receiver android:name=".MyphoneState">

            <intent-filter>

                <action android:name="android.intent.action.PHONE_STATE"></action>

            </intent-filter>

        </receiver>

//代码

public class MyphoneState extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

        if("android.intent.action.PHONE_STATE".equals(intent.getAction())){

            String con=intent.getStringExtra("con");

            //获取电话号码

            String number=intent.getStringExtra("con");

            Log.i("test","电话进来了:"+con);

            //获得电话状态

            //电话管理者

           TelephonyManager  tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

     int state=tm.getCallState();

            switch (state){

                case TelephonyManager.CALL_STATE_RINGING:

                    Log.i("test","电话来了a");

                    break;

                case TelephonyManager.CALL_STATE_OFFHOOK:

                    Log.i("test","电话中,,,,,,,");

                    break;

                case TelephonyManager.CALL_STATE_IDLE:

                    Log.i("test","电话挂了");

                    break;

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: