zoukankan      html  css  js  c++  java
  • android BroadcastReceiver

    AndroidManifast.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.hanqi.testbr">
        <!--接收开机完成的广播权限-->
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <receiver
                android:name=".MyReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter android:priority="20">
                    <action android:name="com.hanqi.textbr.action" />
                </intent-filter>
            </receiver>
    
            <service android:name=".BootService"/>
            <receiver
                android:name=".BootReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED"/>
                </intent-filter>
            </receiver>
        </application>
    
    </manifest>

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.hanqi.testbr.MainActivity"
        android:orientation="vertical">
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="发送一般广播"
            android:onClick="bt1_onclick"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="发送有序广播"
            android:onClick="bt2_onclick"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="动态注册广播接收器"
            android:onClick="bt3_onclick"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="解注册广播接收器"
            android:onClick="bt4_onclick"/>
    
    </LinearLayout>

    MainActivity.java

    package com.hanqi.testbr;
    
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void bt1_click(View v)
        {
            //发送一般广播
            //1.准备意图Intent
            Intent intent = new Intent("com.hanqi.textbr.action");
    
            intent.putExtra("data","广播发出了");
            //2.发送
            sendBroadcast(intent);
    
            Toast.makeText(MainActivity.this, "我发送了广播", Toast.LENGTH_SHORT).show();
        }
        public void bt2_click(View v)
        {
            //发送有序广播
            //1.准备意图Intent
            Intent intent = new Intent("com.hanqi.textbr.action");
    
            intent.putExtra("data", "有序广播发出了");
            //2.发送
            sendOrderedBroadcast(intent, null);
    
            Toast.makeText(MainActivity.this, "我发送了有序广播", Toast.LENGTH_SHORT).show();
        }
        MyReceiver2 myReceiver2;
        public void bt3_onclick(View v)
        {
            if (myReceiver2 == null) {
                //动态注册
                //1.实例化接收器
                myReceiver2 = new MyReceiver2();
                //2.实例化IntentFilter
                IntentFilter intentFilter = new IntentFilter("com.hanqi.textbr.action");
    
                intentFilter.setPriority(1000);
    
                //3.注册
    
                registerReceiver(myReceiver2, intentFilter);
            }
        }
        public void bt4_onclick(View v)
        {
            //解注册
            if (myReceiver2 != null) {
                unregisterReceiver(myReceiver2);
                myReceiver2 = null;
    
                Toast.makeText(MainActivity.this, "解注册接收器", Toast.LENGTH_SHORT).show();
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (myReceiver2 != null) {
                unregisterReceiver(myReceiver2);
    
                myReceiver2 =null;
                //Toast.makeText(MainActivity.this, "解注册接收器", Toast.LENGTH_SHORT).show();
            }
        }
    }

    MyReceiver.java

    package com.hanqi.testbr;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    import android.widget.Toast;
    
    public class MyReceiver extends BroadcastReceiver {
        public MyReceiver() {
            Log.e("ATG","构造广播接收器");
        }
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String str = intent.getStringExtra("data");
    
            // 处理广播
            Log.e("ATG","收到广播了 = "+str);
    
            Toast.makeText(context, "收到广播了 = "+str, Toast.LENGTH_SHORT).show();
            //是否是有序广播
            if (isOrderedBroadcast())
            {
                abortBroadcast();
                Log.e("ATG", "我阻断了有序广播");
                Toast.makeText(context, "我阻断了有序广播", Toast.LENGTH_SHORT).show();
            }
    
        }
    }

    MyReceiver2.java

    
    
    package com.hanqi.testbr;


    import
    android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver2 extends BroadcastReceiver { public MyReceiver2() { Log.e("ATG","构造广播接收器2"); } @Override public void onReceive(Context context, Intent intent) { String str = intent.getStringExtra("data"); // 处理广播 Log.e("ATG","收到广播了2 = "+str); } }
  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/cuikang/p/5429643.html
Copyright © 2011-2022 走看看