安卓學習之BroadcastReceiver:發送標準廣播-----問題:按照安卓第一行代碼Toast一直不提示

#發送自定義廣播

發送標準廣播

首先我們在發送之前必須創建一個廣播接收器來準備接受此廣播
這裏我先創建一個BroadcastReceiver類型的Java類

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button_send);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("com.educate.broadcastreceiver.MY_BROADCAST");
                intent.putExtra("msg","簡單的消息");
                sendBroadcast(intent);
            }
        });
    }
}

在創建Broadcast Receiver 會自己在AndroidManifest.xml加入

<receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
  </receiver>

我們要在這裏加入我們創建的廣播,這裏我的內容是:"com.wingtech.broadcastreceiver.MY_BROADCAST”

然後我們可以修改activity_main中的佈局,我在這家了一個按鈕用於發送廣播

<?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"
    >

    <Button
        android:id="@+id/button_send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="發送廣播"/>
</LinearLayout>

到最後了我們改寫發送廣播的代碼了:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button_send);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("com.educate.broadcastreceiver.MY_BROADCAST");
                intent.putExtra("msg","簡單的消息");
                sendBroadcast(intent);
            }
        });
    }

彩蛋:到這原本應該是能夠運行成功,並且能夠發送接收廣播,我用的是Android9的機器,試了好長時間都沒成功,最後看資料說是安卓的版本太高,我創建了一個Android 7 的虛擬機,結果就運行成功了

下面是我運行的結果
這是我運行的結果

發佈了26 篇原創文章 · 獲贊 7 · 訪問量 3111
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章