Android獲取短信中心號
使用讀取短信的方式獲取短信中心號,然後進行頻率統計,獲取次數最多的。代碼經真機測試可以運行。
使用讀取短信這種方法,獲取的短信中心號可能不准,但是其他方法都沒有測試成功(真機不能運行),不知道什麼原因。
運行效果圖:
================================================
Android獲取短信中心號源碼下載:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2013年資料/3月/29日/Android獲取短信中心號
================================================
部分源碼展示:
SmsUtil.java 短信相關類
package com.wzp.sp.activity.util;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
public class SmsUtil {
private Activity activity;
private static SmsUtil sms;
private SmsUtil( Activity activity){
this.activity=activity;
}
public static SmsUtil getInstance(Activity activity){
if(sms==null){
sms=new SmsUtil(activity);
}
return sms;
}
/**
* 讀取短信
* @return
*/
public String getSmsCenter()
{
String[] projection = new String[] {"service_center"};
StringBuilder str=new StringBuilder();
try{
//獲取所有短信,按時間倒序
Cursor myCursor =activity.managedQuery(Uri.parse("content://sms/inbox"),
projection,
null, null , "date desc");
return doCursor(myCursor);
}
catch (SQLiteException ex)
{
ex.printStackTrace();
}
return null;
}
/**
* 處理游標,得到短信中心號
* @param cur 游標
* @return 短信中心號
*/
private String doCursor(Cursor cur) {
//短信中心號
String smscenter=null;
if (cur.moveToFirst()) {
String smsc;
int smscColumn = cur.getColumnIndex("service_center");
//頻率統計
Frequency fre=new Frequency();
int index=0;
do {
smsc = cur.getString(smscColumn);
fre.addStatistics(smsc); //添加到頻率統計
index++;
} while (cur.moveToNext() && index<50);
smscenter=fre.getMaxValueItem().getKey();
}
return smscenter;
}
}