1.在Android中,SMS消息傳遞是由SmsManager進行處理的。可以通過靜態方法SmsManager.getDefault()來獲得對SmsManager的引用,如下:
SmsManager smsManager = SmsManager..getDefault();
2.Android中,要接收和發送SMS需要以下兩個權限
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
3.SMS的發送
1) 發送文本信息,可以使用SMS Manager 中的sendTextManager 的方法
sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
參數如下:
destinationAddress:接收方的手機號碼
scAddress:發送方的手機號碼
text:信息內容
sentIntent:發送是否成功的回執,會在消息發送成功或者失敗后觸發。
DeliveryIntent:接收是否成功的回執,當目標接收人收到你的信息后觸發。
2)跟蹤和確認SMS消息的發送
sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
參數sentlntent的返回碼如下:
Activity.RESULT_OK:表示發送成功
RESULT_ERROR_GENERIC_FAILURE :表示發生了為指定的錯誤
RESULT_ERROR_RADIO_OFF :表示連接的無線信號被 關閉
RESULT_ERROR_NULL_PDU:表示PDU錯誤
3)發送SMS以及監控它的發送過程是否成功的經典示例:
String SEND_SMS_ACTION = "SENT_SMS_ACTION";
String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
//創建senTIntent參數
Intent sentIntent = new Intent(SEND_SMS_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(getApplicationContext(), 0, sentIntent, 0);
//創建deliveredIntent參數
Intent deliveredIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent delivePI = PendingIntent.getBroadcast(getApplicationContext(), 0, deliveredIntent, 0);
//注冊廣播器
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
switch (getResultCode()) {
case Activity.RESULT_OK:
....
case RESULT_ERROR_GENERIC_FAILURE:
....
case RESULT_ERROR_RADIO_OFF:
....
case RESULT_ERROR_NULL_PDU:
....
}
}
},
new IntentFilter(SEND_SMS_ACTION));
//注冊廣播器
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
....
}
}
},
new IntentFilter(DELIVERED_SMS_ACTION));
4)保證不超過最大的SMS信息大小
SMS的大小一般被限制為160個字符,比它大的信息會被分割為多個小的部分。SMS Manager的divideMeaasge方法可 以接收一個字符串作為輸入,并把他分割到一個消息的ArrayList中,每一個消息都比允許的最大長度小。使用sendMultipartTextM essage可以發送消息數組。如下:
ArrayList<String> messageArray - smsManager.divideMeaasge(myMessage);
ArrayList<PendingIntent> sentIntents = new ArrayList<Pendinglntent>();
for(int i = 0; i < messageArrsy.size(); i ++)
{
sentIntents.add(sentPI);
smsManager.sendMultipartTextMessage(sendTo,null,messageArray,sentintent,null);
}
5)發送數據消息
使用SMS Manager的sendDataMessage方法,可以經由SMS來發送二進制數據。
sendDataMessage與sendTextMessage方法相似,前者需要額外的參數:信息到達的目的端口和由你想發送的數據所組成的一個 字節數組
short destinationPort = 80;
byte[] data = [...you data ...];
smsManager.sendDataMessage(sendTo,null,destinationPort ,data,sentPI,null);
4.SMS的監聽
SMS廣播Intent包含了收到的SMS的詳細信息。要提取封裝在SMS廣播的SmsManager對象,需要使用PDU密鑰來提取一個SMS
pdus數組,其中每一個pdu都表示一條SMS信息。
如下:
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
每一個SMS Manager對象都包含了SMSManager信息的詳細內容(電話號碼,時間戳,信息體)。
要監聽到來的信息,需要使用一個監聽android.provider.Telephony.SMS_RECEIVED動作串的Intent Filter 來注冊一個廣播接收 器。如下:
final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED動作串的Intent Filter";
IntentFilter filter = new IntentFilter(SMS_RECEIVED );
BroadcastReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver ,filter);
posted @
2011-05-20 00:38 3ant 閱讀(1949) |
評論 (0) |
編輯 收藏
Android開發帶來新一輪熱潮讓很多移動開發者都投入到這個浪潮中去了,創造了許許多多相當優秀的應用。
其中也有許許多多的開發者提供了應用開 源項 目,貢獻出他們的智慧和創造力。學習開源代碼是掌握技術的一
個最佳方式。下面推薦幾個應用開源項目,這些項目不僅提供了優秀的創意,也可以直接掌握 Android內核的
接口使用.
1.Android團隊提供的示例項目
如果不是從學習Android SDK中提供的那些樣例代碼開始,可能沒有更好的方法來掌握在Android這個框架上
開發。由Android的核心開發團隊提供了15個優秀的示例項目,包含了游戲、圖像處理、時間顯示、開始菜單
快捷方式等。
地址:
http://code.google.com/p/apps-for-android/2.Remote Droid
RemoteDroid是一個Android應用,能夠讓用戶使用自己的無線網絡使用無線鍵盤、觸摸屏操作手機。這個項
目為開發者提供了如網絡連接、觸摸屏手指運動等很好的樣例。
地址:
http://code.google.com/p/remotedroid/3.TorProxy和Shadow
TorProxy應用實現了Android手機無線電電傳通訊(TOR),和Shadow應用一起使用,可以使用手機匿名上網。
從該項目源代碼中,可以 掌握socket連接、管理cookie等方法。
地址:
http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/4、 Android SMSPopup
SMSPopup可以截獲短信內容顯示在一個泡泡形狀的窗口中。從這個項目中可以掌握到如何使用內置的短信
SMS接口。
地址:
http://code.google.com/p/android-smspopup/5、 Standup Timer
Standup Timer應用用于控制站立會議時間,類似秒表倒計時,可以提醒每個人的講話時間已到,從而保證每
個與會者使用時間一樣。從該項目的代碼中,可以學會如何 使用時間函數。另外,這個項目的代碼是采用視圖
view、模型model嚴格分離的設計思路。
地址:
http://github.com/jwood/standup-timer6、 Foursquare
http://www.javaeye.com/news Foursquare應用主要分為兩個模塊:API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)兩部分。從該項目代碼中,可以學會如何同步、多線程、HTTP連接等技術。
地址:
http://code.google.com/p/foursquared/7、 Pedometer
Pedometer應用用于記錄你每天走路步[]數的。盡管記錄不一定精準,但是從這個項目中,可以學習幾個不同
的技術:加速器交互、語音更新、后臺運行服 務等。
地址:
http://code.google.com/p/pedometer/8、 OpenSudoku-android
OpenSudoku是一個簡單的九宮格數獨游戲。從代碼中可以學習到如何在視圖中顯示表格數據,以及如何和一
個網站交互等技術。
地址:
http://code.google.com/p/opensudoku-android9、 ConnectBot
ConnectBot是Android平臺的一個客戶端安全殼應用。從該項目代碼中,可以學習到很多Android安全方面的
內容,這些是你在開發應用 時經常需要考慮的安全問題。
地址:
http://code.google.com/p/connectbot/10、 WordPress的Android應用
當然在最后不能不提Wordpress的Android應用了,這是Wordpress官方開發團隊提供的一個項目。從代碼中
可以學習到XMLRPC調 用(當然還有更多的優秀內容)。
地址:
http://android.svn.wordpress.org/trunk/注:
該文章轉自:http://www.opda.cn/2010/08/23/top-10-open-source-android-apps/
posted @
2011-05-19 14:57 3ant 閱讀(382) |
評論 (0) |
編輯 收藏
一、編碼設置:
1:對工作區workspace進行編碼設置,window-->preferences 設置 如下圖:

-------------------------------------
2:對工程project進行編碼設置 工程名 右鍵 properties 設置如下圖:

-------------------------------------
3:但此時你會發現設置了這兩情況之后還是會出現亂碼,因為上面這兩種方式只是對text類型的文件編碼進行了設置。其他的(如jsp)等的編碼還是默認的(可能與workspace和project所設置的編碼不一樣,如ISO-8859-1)。此時,我們需要對內容類型(ContentType)下的各種類型的文件(如jsp、html...)進行設置,window-->preferences 如下圖:

-------------------------------------
二:eclipse 方法自動提示設置:
window-->
三:相同變量名高亮顯示設置:
window-->
四:文件默認打開方式設置:
window-->
Over.
posted @
2010-01-14 10:58 3ant 閱讀(991) |
評論 (0) |
編輯 收藏