2013年3月1日 星期五

[Android]BroadcastReceiver最基本應用入門

專案參考:第二十一讲:Broadcast Receiver 使用入门

AndroidManifest:
//插入在/activity之後
/activity
//設定receiver存在的class
        receiver android:name="recive"
            intent-filter
//設定receiver存在的class中的 broadcast action 可以多重設定
                action android:name="show_toast" /
                action android:name="show_dialog" /
            /intent-filter
        /receiver
    /application
//以及/application之前
//左右箭頭 < >自己記得加 註解記得拿掉~

主程式MainActivity.java :

public class MainActivity extends Activity {
private Button toast;
private Button Adialog;
private String toastss = "toast";
private String dialogss = "dialog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = (Button)this.findViewById(R.id.bt1);
Adialog = (Button)this.findViewById(R.id.bt2);
toast.setOnClickListener(new Button.OnClickListener(){
  public void onClick(View v){
  Intent intent = new Intent("toast");
  intent.setAction("show_toast");
  intent.putExtra("hello",toastss);
  sendBroadcast(intent);   
}
});
Adialog.setOnClickListener(new Button.OnClickListener(){
  public void onClick(View v){
  Intent intent = new Intent("toast");
  intent.setAction("show_dialog");
  intent.putExtra("hello",dialogss);
  sendBroadcast(intent);   
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

副程式recive.java : 
public class recive extends BroadcastReceiver {
private Toast toast;
private AlertDialog show;
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("show_toast")){
String toastv = intent.getExtras().getString("hello");
Log.e("show_toast", toastv+"Say Hello to Yaoyao !!!!!");
//toast = Toast.makeText(getApplicationContext(),toastv,Toast.LENGTH_LONG);
 //toast.setDuration(Toast.LENGTH_LONG);// show的時間長短正規寫法 LONG長 SHORT短
 // 3個屬性分別為Gravity,x座標,y座標
 //toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP,0,100);
 //toast.show();
}
if(intent.getAction().equals("show_dialog")){
String dialog = intent.getExtras().getString("hello");
Log.e("show_dialog", dialog+"Say Hello to Yaoyao !!!!!");
//show = new AlertDialog.Builder(this).setTitle(dialog)
   //.setMessage("您好")
   //.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    //public void onClick(DialogInterface dialog, int which) {
    //}
   //}).show();
}
}
}
執行結果:


後記:本來想用Broadcast 來啟動開啟toast 跟 alertdialog 但是
我另外一個副程式 是 public class recive extends BroadcastReceiver 
不是activity所以不能設定view

不過我會補完 這是下一個目標~


沒有留言:

張貼留言