標籤:tin ide click color 程式 short example and port
為了簡單解決廣播的安全性問題,Android引入了一套本地廣播機制,使用這個機制發出的廣播只能在程式的內部進行傳遞,只能接受來自本應用程式發出的廣播。否則當我們發送一些攜帶關鍵資料的廣播可能被截獲,一些惡意程式也可能向我們的廣播接收器中發送各種垃圾廣播。
用法如下:(主要就是使用LocalBroadcastManager來對廣播進行管理,並提供註冊廣播和發送廣播的方法)。
package com.example.xch.localbroadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.support.v4.content.LocalBroadcastManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private Button sendBroadcast; private LocalReceiver localReceiver; private LocalBroadcastManager localBroadcastManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); localBroadcastManager=LocalBroadcastManager.getInstance(this);//通過getInstance()得到LocalBroadcastManager的執行個體 sendBroadcast=(Button) findViewById(R.id.sendBroadcast); sendBroadcast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //發送本地廣播 Intent intent=new Intent("com.example.LOCAL_BROADCAST"); localBroadcastManager.sendBroadcast(intent); } }); //註冊本地廣播監聽器 intentFilter=new IntentFilter(); intentFilter.addAction("com.example.LOCAL_BROADCAST"); localReceiver=new LocalReceiver(); localBroadcastManager.registerReceiver(localReceiver,intentFilter); } class LocalReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接受到本地廣播",Toast.LENGTH_SHORT).show(); } } @Override protected void onDestroy() { super.onDestroy(); localBroadcastManager.unregisterReceiver(localReceiver);//關閉廣播 }}
Android學習總結——本地廣播機制