1. 程式人生 > >Android之程序通訊——廣播

Android之程序通訊——廣播

不同程序間的通訊,其實Android的四大元件都可以實現。

日常,我們用廣播,在一個獨立的app中使用的較多。或者是系統和app之間使用。

在兩個自定義的app之間,我們也寫個例子,表明廣播是很好用的!!

在這裡就自定義兩個app:BroadCastA(後面稱為A)、BroadCastB(後面稱為B)。A傳送廣播,B接收廣播。

例子如下:

BroadCastA:

package com.example.broadcasta;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Button btnButton=(Button)findViewById(R.id.send);
		btnButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent=new Intent();
				intent.setAction("com.bill99.test");
				intent.putExtra("info", "傳遞內容");
				sendBroadcast(intent);
			}
		});
		
	}


}
BroadCastB如下:
package com.example.broadcastb;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import android.widget.Toast;

public class MainActivity extends Activity {

	BroadcastReceiver broadcastReceiver;
	IntentFilter intentFilter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		intentFilter=new IntentFilter();
		intentFilter.addAction("com.bill99.test");
		broadcastReceiver=new MyReceiver();
		registerReceiver(broadcastReceiver, intentFilter);
		
	}

	class MyReceiver extends BroadcastReceiver
	{

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			if(intent!=null){
			   if(!TextUtils.isEmpty(intent.getAction())){
				   Toast.makeText(getApplicationContext(), intent.getAction(), Toast.LENGTH_SHORT).show();
			   }
			   if(!TextUtils.isEmpty(intent.getStringExtra("info"))){
				   Toast.makeText(getApplicationContext(), intent.getStringExtra("info"), Toast.LENGTH_SHORT).show();
			   }
			}
		}
		
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		unregisterReceiver(broadcastReceiver);
	}

    
}

兩個app執行後,你在A中點選廣播發送,在B中就可以收到廣播和傳遞資訊了。