Android Studio 廣播的實現


1.創建一個應用程序,點擊按鈕實現發送廣播。收到廣播后在logcat中顯示“智能終端開發課程在學銀在線開課啦”。

運行效果如圖所示:

activity_gb.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading">

    <Button
        android:text="發送廣播消息"
        android:layout_marginTop="@android:dimen/app_icon_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="send"/>

</LinearLayout>

GBActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;

public class GBActivity extends AppCompatActivity {

    protected MyReceiver receiver;
    protected IntentFilter intentFilter;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gb);

        receiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("zy_send");
        registerReceiver(receiver,intentFilter);
    }
    public void send(View view){
        Intent intent = new Intent();
        //定義廣播事件類型
        intent.setAction("zy_send");
        //發送廣播
        sendBroadcast(intent);
    }
    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

MyReceiver.java

package com.example.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver","智能終端開發課程在學銀在線開課啦");
    }
}

2.創建三個廣播接收者1、2、3,並在注冊時設置廣播接收者的優先級,實現有序廣播,要求按照3、2、1的順序接受廣播消息,在logcat中按接受順序顯示廣播接收者的名稱。

activity_gb.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading">

    <Button
        android:text="發送有序廣播信息"
        android:layout_marginTop="@android:dimen/app_icon_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="send"/>

</LinearLayout>

GBActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;

public class GBActivity extends AppCompatActivity {

    protected MyReceiver receiver;
    protected MyReceiver2 receiver2;
    protected MyReceiver3 receiver3;
    protected IntentFilter intentFilter;
    protected IntentFilter intentFilter2;
    protected IntentFilter intentFilter3;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gb);

        receiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("zy_send");
        intentFilter.setPriority(200);

        receiver2 = new MyReceiver2();
        intentFilter2 = new IntentFilter();
        intentFilter2.addAction("zy_send");
        intentFilter2.setPriority(300);

        receiver3 = new MyReceiver3();
        intentFilter3 = new IntentFilter();
        intentFilter3.addAction("zy_send");
        intentFilter3.setPriority(400);

        registerReceiver(receiver3,intentFilter3);
        registerReceiver(receiver2,intentFilter2);
        registerReceiver(receiver,intentFilter);
    }
    public void send(View view){
        Intent intent = new Intent();
        //定義廣播事件類型
        intent.setAction("zy_send");
        //發送廣播
        sendOrderedBroadcast(intent,null);
    }
    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

MyReceiver.java

package com.example.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver","智能終端開發課程在學銀在線開課啦1");
    }
}

MyReceiver2.java

package com.example.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver2 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver2","智能終端開發課程在學銀在線開課啦2");
    }
}

MyReceiver3.java

package com.example.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver3 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver3","智能終端開發課程在學銀在線開課啦3");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM