我想剛開始一定學習廣播一定會有人很頭痛,到底它的用途是什麼?
其實可以想像一下 :
1 . 整個手機是一個校園
2 . 學校有事情或請學生到指定地點集合,一定用廣播,不太可能慢慢走到位置
3 . 要能聽到廣播一定要在教室安裝喇叭才聽的到
4 . 不可能一聽到廣播就一定是呼X班全部學生,一定是1年1班1號王大頭
5 . 這時候王大頭才會到指定的地方
注意 : 廣播不會單一位置廣播,他是全範圍廣播
我們先一步一步慢慢來
首先,試試看怎麼廣播
*單純只有廣播
紅色文字部分代表學生的學號以及姓名
下面要傳送的字串代表要請他做的事情或想說的事情
--------------------------------------------------------------------
廣播發送
*在說廣播之前一定要先說!!!
其實您的手機內是非常非常吵雜的,因為手機一直在做廣播的動作
您螢幕開啟了!
您螢幕關閉了!
您手機快沒電!
您正在充電中!
.
.
.
非常多的廣播!!!!
為啥沒感覺?當然了,他不是呼叫王大明,那您何必理廣播你的人。
所以你只要在你APP內註冊一個叫王大明的人
只要一有王大明廣播就要開始忙東忙西囉!!!
--------------------------------------------------------------------
在手機註冊廣播接收有 2 種方法( 二選一 ) :
1 . 直接在Activity 或 Service註冊
但是記得要有註銷的動作
2 . 在 AndroidManifest.xml 下
注意 : 在這裡註冊手機行為是無法廣播接收的
ex : <action android:name="android.intent.action.SCREEN_OFF" />
-----------------------------------------
所以請王大明到這間教室( ReceiverDetect ),有人找他
必須有一個繼承 BroadcastReceiver 來做處理
ReceiverDetect.java
以下為Sample ( 此範例為第二種方法 ):
MainActivity.java
ReceiverDetect.java
AndroidManifest.xml
歡迎轉載,請註明出處。
我們先一步一步慢慢來
首先,試試看怎麼廣播
*單純只有廣播
紅色文字部分代表學生的學號以及姓名
下面要傳送的字串代表要請他做的事情或想說的事情
--------------------------------------------------------------------
廣播發送
Intent intent = new Intent();
intent.setAction("com.example.broadcasereciver.Hello");
intent.putExtra("HELLO", "How are you.");
sendBroadcast(intent);
*在說廣播之前一定要先說!!!
其實您的手機內是非常非常吵雜的,因為手機一直在做廣播的動作
您螢幕開啟了!
您螢幕關閉了!
您手機快沒電!
您正在充電中!
.
.
.
非常多的廣播!!!!
為啥沒感覺?當然了,他不是呼叫王大明,那您何必理廣播你的人。
所以你只要在你APP內註冊一個叫王大明的人
只要一有王大明廣播就要開始忙東忙西囉!!!
--------------------------------------------------------------------
在手機註冊廣播接收有 2 種方法( 二選一 ) :
1 . 直接在Activity 或 Service註冊
//註冊王大明的ID
IntentFilter ifilter = new IntentFilter();
ifilter.addAction("my_name_is_wang");
ReceiverDetect receiverDetect = new ReceiverDetect();
registerReceiver(receiverDetect, ifilter);
但是記得要有註銷的動作
unregisterReceiver(receiverDetect);
2 . 在 AndroidManifest.xml 下
注意 : 在這裡註冊手機行為是無法廣播接收的
ex : <action android:name="android.intent.action.SCREEN_OFF" />
<receiver android:name="ReceiverDetect" >
<intent-filter>
<action android:name="my_name_is_wang" />
</intent-filter>
</receiver>
-----------------------------------------
所以請王大明到這間教室( ReceiverDetect ),有人找他
必須有一個繼承 BroadcastReceiver 來做處理
ReceiverDetect.java
public class ReceiverDetect extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d("tag", "action:" + action);
}
}
以下為Sample ( 此範例為第二種方法 ):
MainActivity.java
package com.example.broadcasereciver;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Button sendMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendMessage = (Button) findViewById(R.id.btnSendBroadcast);
sendMessage.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("i_am_hungry");
intent.putExtra("HELLO", "hello you");
sendBroadcast(intent);
}
}
ReceiverDetect.java
package com.example.broadcasereciver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class ReceiverDetect extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String strAction = intent.getAction();
Log.d("tag", "action:" + strAction);
Bundle bundle0311 = intent.getExtras();
if(bundle0311!= null){
String aaa = bundle0311.getString("HELLO");
Log.d("tag","aaa : "+aaa);
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcasereciver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="ReceiverDetect" >
<intent-filter>
<action android:name="i_am_hungry" />
</intent-filter>
</receiver>
</application>
</manifest>
歡迎轉載,請註明出處。
沒有留言:
張貼留言