Android四大組件之廣播接收器(三)

爲了能夠簡單地解決廣播的安全性問題,Android 引入了一套本地廣播機制,使用這個機制發出的廣播只能夠在應用程序的內部進行傳遞,並且廣播接收器也只能接收來自本應用程序發出的廣播,這樣所有的安全性問題就都不存在了。


代碼示例:

public class MainActivity extends AppCompatActivity {

    private IntentFilter intentFilter;
    private LocalReceiver localReceiver;
    private LocalBroadcastManager localBroadcastManager;
    private Button localButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //發送本地廣播
        localBroadcastManager = LocalBroadcastManager.getInstance(MainActivity.this);
        localButton = (Button)findViewById(R.id.localSend);
        localButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.horizon.localBroadcast");
                localBroadcastManager.sendBroadcast(intent);
            }
        });
        //動態註冊本地廣播接收器
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.horizon.localBroadcast");
        localReceiver = new LocalReceiver();
        localBroadcastManager.registerReceiver(localReceiver,intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(localReceiver);
    }

    class LocalReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "收到本地廣播!!!",
                    Toast.LENGTH_SHORT).show();
        }
    }

}

其實本地廣播的發送和動態註冊廣播是類似的,在接收上也是通過內部類,需要注意的是本地廣播無法被靜態註冊的接收器接收。

本地廣播優勢:

1. 可以明確地知道正在發送的廣播不會離開我們的程序,因此不需要擔心機密數據泄
漏的問題。
2. 其他的程序無法將廣播發送到我們程序的內部,因此不需要擔心會有安全漏洞的隱
患。
3. 發送本地廣播比起發送系統全局廣播將會更加高效。


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