爲了能夠簡單地解決廣播的安全性問題,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. 發送本地廣播比起發送系統全局廣播將會更加高效。