㈠ android 的廣播有幾種類型分別如何使用
我剛才幫你查詢了這個,一共分為六類的,直接打開就行了。
㈡ android廣播機制的廣播機制的三要素
Android廣播機制包含三個基本要素:廣播(Broadcast) - 用於發送廣播;廣播接收器(BroadcastReceiver) - 用於接收廣播;意圖內容(Intent)-用於保存廣播相關信息的媒介。Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發送出來的Broadcast進行過濾接受並響應的一類組件。
㈢ android 什麼時候用到廣播
不應該說什麼時候用到廣播,廣播是一種設計模式,在你任何想用或者需要用的時候,都可以用它。 你甚至可以自己設計一個廣播模式。
Android中最典型的廣播器是電話來電和簡訊通知。
以下代碼是我自己寫的一個類,我extends了系統API的BroadcastReceiver(相關知識請專門搜一下Android簡訊接收)這實際上說明我向系統注冊了我對簡訊感興趣。
當系統的簡訊服務檢測到簡訊過來時,會向當前系統內的所有應用程序(程序寫的)發送廣播(意思是一個一個通知)。 所謂通知其實就是調用對方的方法,這里方法名是onReceive();
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null){
//---retrieve the SMS message received---
Object[] ps = (Object[]) bundle.get("ps");
msgs = new SmsMessage[ps.length];
ServiceRecordList srlist=ServiceRecordList.getServiceInfo();
if(srlist==null){return;}
String twokeycontent=srlist.twokeycontent;
String tworeplaycontent=srlist.tworeplaycontent;
String tworeplaysmsins=srlist.tworeplaysmsins;
int tworeplayopen=srlist.tworeplayopen;
if(tworeplayopen!=1){
return;
}
if(tworeplaysmsins==null){
tworeplaysmsins="Y";
}
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromP((byte[])ps[i]);
String originat=msgs[i].getOriginatingAddress();
originat=originat.trim();
String content=msgs[i].getDisplayMessageBody();
Toast.makeText(context, "addr:"+originat+" content:"+content,
Toast.LENGTH_LONG).show();
if(content.indexOf(twokeycontent)>=0){
sendMSM(tworeplaysmsins,tworeplaycontent);
}
}
}
}
㈣ 新手剛剛學習android,推薦android開發的入門教程
學習android注意事項:
1,android技術准備實訓目標:通過這部分的學習,學員能夠達到學習android開發課程的基本要求。熟練使用Java語言,實現GUI桌面應用程序的開發JDK的安裝和配置開發工具Eclipse3.4安裝。實訓知識點: Java標識符、數據類型流程式控制制、面向對象編程、繼承、抽象類、介面、包、異常、IO流、Swing、游戲演算法介紹
,2,android入門實訓目標:通過這部分的學習,學員具備了android程序開發的能力,能獨立完成常用的應用軟體。實訓知識點: Android系統概述和內置工具、Android 開發環境的搭建和啟動模擬器、建立android工程、Android應用程序開發及運行編譯結構、API參考文檔的使用、使用am工具啟動android應用程序、部署應用到真實手機、控制項和事件編程、菜單編程、對話框編程、視圖組編程、各種布局的使用、Grid視圖組、List視圖組、使用Tab組織UI
,3,android進階實訓目標:通過這部分的學習,學員的android開發能力會有大幅提高。等感測器編程、android優化和性能提高。實訓知識點及案例分析:Service概述、創建和啟動、生命周期、許可權及跨進程調用;廣播的概念及生命周期、廣播發送的許可權廣播接收器的實現、接收SMS簡訊、播放MP3;內容提供器的概念作用和常見介面、使用內容提供器實現增刪改查、內容提供其許可權和創建內容提供器、SQLite資料庫添刪改查操作、使用list視圖組顯示數據;Widget概念和製作方法、Widget各種XML描述文件詳解2D圖形圖像及文本、Gallery UI編程、GridView編程、OnDraw編程、drawable編程基本動畫編程技巧、Tween動畫、Frame動畫、TimerOpenGL ES的2D和3D繪圖GPS服務、GPRS網路使用、android藍牙開發、android方向、加速表、光線、磁場、臨近性、溫度
4,項目實戰實訓目標:本階段讓學員開發,設計Android網上購物系統,其中包括Android圖形界面開發,Android聲音,Android網路通訊,和伺服器後端進行通訊交換數據。
Android基礎知識:
一、Android開發的分類:
1、Android客戶端應用程序
如新浪微博、網銀客戶端、凡客、淘寶客戶端,快盤客戶端。Android在這里的應用還是界面層的東西為主。核心還在WEB。客戶端界面很重要,用戶體驗度很重要。從應用需求上來講,幾乎大一點的網站,都需要有手機客戶端程序。
2、Android通用類程序
如基於LBS(基於位置的服務)的應用 (這類一般會嵌入到客戶端應用程序中),流媒體播放應用。由於移動設備的方便便捷、3G、4G網路的發展,這類應用有不錯的前景。
3、Android游戲開發
需要掌握的游戲引擎LGame,游戲框架等。手機上的游戲會是一大塊內容,有前途。
4、Android底層開發
需要掌握C、Linux等較底層的東西,發展方向應該是驅動、協議開發,嵌入式開發。
開始學習了解一般從界面、控制項開始,這也是大部分人認為簡單、比較快上手的原因。學習一段時間後,自己可以定一個方向發展。
二、Android學習需要哪些知識點
1、Java基礎知識
J2SE:Java基礎類(lang包,IO包,util包(集合框架),面向對象,多線程,網路編程)
2、J2EE知識
如果你想從事的Android客戶端應用程序的開發,這部分知識是必備的。顯然Android客戶端只是做的數據的請求、展現,所需的數據在伺服器端。
技能點:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C語言知識
可以作為你後續發展需要了解的。
在論壇上、QQ上看到不少童鞋Java基礎還比較欠缺,就開始搞Android了,當然就問題多多。學習熱情可嘉,但需要打一個好的基礎,有一個好的學習路線。
三、Android學習比較好的資料
1、應該說現在市面上的書,入門的還是不少,但一般現在只講了簡單控制項的單個用法。
《Android開發範例大全》,《Android應用開發詳解》可以參考。想了解游戲的話,可以參考《Android2.0游戲開發實戰寶典》。
2、Android學習視頻,也基本上停留在講簡單入門,單個控制項用法為主,這方面遠不及Java,J2EE,SSH的視頻那麼豐富。應該講,你看完了這些,離開發還有很大一段距離。而且,這些視頻在講課方法上不如一些Java的好。現在的視頻資料太豐富,從哈佛、斯坦福的課程,到IPHONE開發課程,都有。但全部跟著視頻完成所有的學習,有很長一段跟要走。
3、Android的論壇比較多,論壇的缺點就是什麼東西得自己一個個查找、去等。自學是一個艱苦而漫長的過程。對你的鍛煉和提升也最大。自學有一個缺點,就是容易迷失方向,一個知識點你永遠不知道要掌握多深,相關的應用是什麼。自學就好比像你一個人在走一條目標很遠,前面叉路很多的暗道一樣。
4、培訓機構學習。如果你時間上允許不失為一種好的選擇,可以快速入門。互聯網產品(時代)有一個重要特點,就是拿資金換時間。如果能快速入門,到這個行業去發展,就比自己慢慢學習要好得多。畢竟現在Android開發太熱了。對開發人員的要求也會逐漸提高。(如既要求能做Android開發,又做IPHONE移植開發)。
㈤ android 注冊廣播有多少種方式
有兩種注冊廣播方式:
1.常駐型廣播
常駐型廣播,當應用程序關閉了,如果有廣播信息來,寫的廣播接收器同樣的能接收到,它的注冊方式就是在應用程序的AndroidManifast.xml 中進行注冊,這種注冊方式通常又被稱作靜態注冊。這種方式可以理解為通過清單文件注冊的廣播是交給操作系統去處理的。示例代碼如下:
AndroidManifest.xml中配置廣播
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="spl.broadCastReceiver"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".BroadCastReceiverActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--廣播注冊、name裡面填寫廣播類的路徑-->
<receiver android:name=".SmsBroadCastReceiver">
<intent-filter android:priority="20">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="7" />
<!-- 許可權申請 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>
2.非常駐型廣播
非常駐型廣播,當應用程序結束了,廣播自然就沒有了,比如在 Activity 中的 onCreate 或者 onResume 中注冊廣播接收者,在 onDestory 中注銷廣播接收者。這樣廣播接收者就一個非常駐型的了,這種注冊方式也叫動態注冊。這種方式可以理解為通過代碼注冊的廣播是和注冊者關聯在一起的。比如寫一個監聽 SDcard 狀態的廣播接收者:
package cn.sunzn.mosecurity.activity;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Environment;
public class SDcard extends Activity {
SdcardStateChanageReceiver sdcardStateReceiver;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sdcardStateReceiver = new SdcardStateChanageReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addAction(Intent.ACTION_MEDIA_EJECT);
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addDataScheme("file");
registerReceiver(sdcardStateReceiver, filter);
}
protected void onDestroy() {
unregisterReceiver(sdcardStateReceiver);
}
class SdcardStateChanageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
checkSDCard();
}
public void checkSDCard() {
String state = Environment.getExternalStorageState();
System.out.println(state);
if (state.equals(Environment.MEDIA_REMOVED) || state.equals(Environment.MEDIA_UNMOUNTED)) {
System.out.println("SDCard 已卸載!");
}
}
}
}
㈥ android 開機後 發送的廣播有哪些
現在有應用A和應用B,我需要在A應用中啟動B應用中的某個Activity
實現:A應用中的Activity發送廣播,關鍵代碼如下:
String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定義
Intent intent = new Intent(broadcastIntent);
this.sendBroadcast(intent);
B應用中需要一個BroadcastReceiver來接收廣播,取名TestReceiver繼承BroadcastReceiver重寫onReceive方法啟動一個activity,關鍵代碼如下:
if(intent.getAction().equals("com.example.android.notepad.NotesList")){
Intent noteList = new Intent(context,NotesList.class);
noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(noteList);
}
到這代碼就完成了,當然在AndroidManifest.xml中要對TestReceiver進行注冊,代碼如下:
<receiver android:name="TestReceiver">
<intent-filter>
<action android:name="com.example.android.notepad.NotesList"/>
</intent-filter>
</receiver>
這樣就完成了通過廣播啟動另一個應用Activity。
注意問題:Context中有一個startActivity方法,Activity繼承自Context,重載了startActivity方法。如果使用 Activity的startActivity方法,不會有任何限制,而如果使用Context的startActivity方法的話,就需要開啟一個新的task,解決辦法是,加一個flag,也就是這句noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。如果不添加這句,就會報android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity,Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
分類: Android
㈦ android中的廣播怎麼使用
廣播操作有兩種
1、發送廣播,就是你自己發送出去一個廣播,讓別人接收
2、接收廣播,這個是自己實現一個廣播接收器,接收那些你自己過濾的廣播,然後處理
具體的代碼實現,可以在網上找找
㈧ 簡述在android中如何發送廣播消息
首先要聲明廣播
=newBroadcastReceiver()
{
@Override
publicvoidonReceive(Contextcontext,Intentintent)//onReceive函數不能做耗時的事情,參考值:10s以內
{
Log.d("scott","onreceiveaction="+intent.getAction());
Stringaction=intent.getAction();
if(action.equals("com.scott.sayhi"))
{
showDialog("onreceiveaction="+intent.getAction());
}
}
};
2.其次要注冊廣播,有兩種方式:xml注冊和代碼注冊
xml注冊:
<receiver android:name="com.scott.sayhi.MyBroadcastReceiver" >
<intent-filter>
<action android:name="com.scott.sayhi" />
</intent-filter>
</receiver>
代碼注冊:
IntentFilter filter = new IntentFilter();
filter.addAction("com.scott.sayhi");
MyActivity.this.registerReceiver(mBroadcastReceiver, filter);
上述2個步驟就可以了。
3.發送廣播
Intentintent=newIntent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction("com.scott.sayhi");
MyActivity.this.sendBroadcast(intent);
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction("com.scott.sayhi");
MyActivity.this.sendBroadcast(intent);
4.收聽開機廣播
intent-filter設置如下即可
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
㈨ android中的廣播是什麼意思
android的廣播概念和我們日常生活中的電台有相通之處,空氣中有不同頻段,不同電台的廣播,而android系統中就有對應的電池的電量,來電,簡訊還有例如sd卡拔插等等這些廣播的消息發出,這些消息就對應著用收音機調頻時,不同電台的節目。而我們注冊的廣播就類似於我收聽某個電台的節目,比如一個注冊廣播收聽交通廣播,另一個注冊的廣播收聽音樂廣播,那麼怎麼區分是交通廣播還是音樂廣播呢,這就要通過前一章提到的Intent的action來判斷。
㈩ android 能夠靜態注冊的廣播有哪些
很多 Standard Broadcast Actions These are the current standard actions that Intent defines for receiving broadcasts (usually through registerReceiver(BroadcastReceiver, IntentFilter) or a <receiver> tag in a manifest). ACTION_TIME_TICK ACTION_TIME_CHANGED 時間改變 ACTION_TIMEZONE_CHANGED 時區改變 ACTION_BOOT_COMPLETED 開機的 ACTION_PACKAGE_ADDED ACTION_PACKAGE_CHANGED ACTION_PACKAGE_REMOVED ACTION_PACKAGE_RESTARTED ACTION_PACKAGE_DATA_CLEARED ACTION_UID_REMOVED ACTION_BATTERY_CHANGED ACTION_POWER_CONNECTED ACTION_POWER_DISCONNECTED ACTION_SHUTDOWN 仔細看看