一段完整的Android平台上短信功能的接口源码,利用扩展的API可以通过js实现如下功能:
1. getContentUris():读取短信相关的所有数据库表的Uri地址;
2. get(int number):读取若干条短信;
3. getUnread(int number):读取若干条未读短信;
4. getRead(int number):读取若干条已读短信;
5. getInbox(int number):从收件箱读取若干条短信;
6. getSent(int number):读取若干条已发短信;
7. getByThread(int threadID):读取会话中所有短信;
8. getThreads(int number):读取若干条会话;
9. getData(String selection, int number):根据条件读取若干条短信。
1. getContentUris():读取短信相关的所有数据库表的Uri地址;
2. get(int number):读取若干条短信;
3. getUnread(int number):读取若干条未读短信;
4. getRead(int number):读取若干条已读短信;
5. getInbox(int number):从收件箱读取若干条短信;
6. getSent(int number):读取若干条已发短信;
7. getByThread(int threadID):读取会话中所有短信;
8. getThreads(int number):读取若干条会话;
9. getData(String selection, int number):根据条件读取若干条短信。
- /*
- *Copyright(C)2011TheRexseeOpenSourceProject
- *
- *LicensedundertheRexseeLicense,Version1.0(the"License");
- *youmaynotusethisfileexceptincompliancewiththeLicense.
- *YoumayobtainacopyoftheLicenseat
- *
- *http://www.rexsee.com/CN/legal/license.html
- *
- *Unlessrequiredbyapplicablelaworagreedtoinwriting,software
- *distributedundertheLicenseisdistributedonan"ASIS"BASIS,
- *WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
- *SeetheLicenseforthespecificlanguagegoverningpermissionsand
- *limitationsundertheLicense.
- */
- packagerexsee.communication;
- importrexsee.core.browser.JavascriptInterface;
- importrexsee.core.browser.RexseeBrowser;
- importrexsee.core.utilities.Escape;
- importandroid.content.ContentResolver;
- importandroid.content.Context;
- importandroid.database.Cursor;
- importandroid.net.Uri;
- publicclassRexseeSMSimplementsJavascriptInterface{
- privatestaticfinalStringINTERFACE_NAME="SMS";
- @Override
- publicStringgetInterfaceName(){
- returnmBrowser.application.resources.prefix+INTERFACE_NAME;
- }
- @Override
- publicJavascriptInterfacegetInheritInterface(RexseeBrowserchildBrowser){
- returnthis;
- }
- @Override
- publicJavascriptInterfacegetNewInterface(RexseeBrowserchildBrowser){
- returnnewRexseeSMS(childBrowser);
- }
- publicstaticfinalStringCONTENT_URI_SMS="content://sms";
- publicstaticfinalStringCONTENT_URI_SMS_INBOX="content://sms/inbox";
- publicstaticfinalStringCONTENT_URI_SMS_SENT="content://sms/sent";
- publicstaticfinalStringCONTENT_URI_SMS_CONVERSATIONS="content://sms/conversations";
- publicstaticString[]SMS_COLUMNS=newString[]{
- "_id",//0
- "thread_id",//1
- "address",//2
- "person",//3
- "date",//4
- "body",//5
- "read",//6;0:notread1:read;defaultis0
- "type",//7;0:all1:inBox2:sent3:draft4:outBox5:failed6:queued
- "service_center"//8
- };
- publicstaticString[]THREAD_COLUMNS=newString[]{
- "thread_id",
- "msg_count",
- "snippet",
- };
- privatefinalContextmContext;
- privatefinalRexseeBrowsermBrowser;
- publicRexseeSMS(RexseeBrowserbrowser){
- mBrowser=browser;
- mContext=browser.getContext();
- }
- //JavaScriptInterface
- publicStringgetContentUris(){
- Stringrtn="{";
- rtn+="\"sms\":\""+CONTENT_URI_SMS+"\"";
- rtn+=",\"inbox\":\""+CONTENT_URI_SMS_INBOX+"\"";
- rtn+=",\"sent\":\""+CONTENT_URI_SMS_SENT+"\"";
- rtn+=",\"conversations\":\""+CONTENT_URI_SMS_CONVERSATIONS+"\"";
- rtn+="}";
- returnrtn;
- }
- publicStringget(intnumber){
- returngetData(null,number);
- }
- publicStringgetUnread(intnumber){
- returngetData("type=1ANDread=0",number);
- }
- publicStringgetRead(intnumber){
- returngetData("type=1ANDread=1",number);
- }
- publicStringgetInbox(intnumber){
- returngetData("type=1",number);
- }
- publicStringgetSent(intnumber){
- returngetData("type=2",number);
- }
- publicStringgetByThread(intthread){
- returngetData("thread_id="+thread,0);
- }
- publicStringgetData(Stringselection,intnumber){
- Cursorcursor=null;
- ContentResolvercontentResolver=mContext.getContentResolver();
- try{
- if(number>0){
- cursor=contentResolver.query(Uri.parse(CONTENT_URI_SMS),SMS_COLUMNS,selection,null,"datedesclimit"+number);
- }else{
- cursor=contentResolver.query(Uri.parse(CONTENT_URI_SMS),SMS_COLUMNS,selection,null,"datedesc");
- }
- if(cursor==null||cursor.getCount()==0)return"[]";
- Stringrtn="";
- for(inti=0;i<cursor.getCount();i++){
- cursor.moveToPosition(i);
- if(i>0)rtn+=",";
- rtn+="{";
- rtn+="\"_id\":"+cursor.getString(0);
- rtn+=",\"thread_id\":"+cursor.getString(1);
- rtn+=",\"address\":\""+cursor.getString(2)+"\"";
- rtn+=",\"person\":\""+((cursor.getString(3)==null)?"":cursor.getString(3))+"\"";
- rtn+=",\"date\":"+cursor.getString(4);
- rtn+=",\"body\":\""+Escape.escape(cursor.getString(5))+"\"";
- rtn+=",\"read\":"+((cursor.getInt(6)==1)?"true":"false");
- rtn+=",\"type\":"+cursor.getString(7);
- rtn+=",\"service_center\":"+cursor.getString(8);
- rtn+="}";
- }
- return"["+rtn+"]";
- }catch(Exceptione){
- mBrowser.exception(getInterfaceName(),e);
- return"[]";
- }
- }
- publicStringgetThreads(intnumber){
- Cursorcursor=null;
- ContentResolvercontentResolver=mContext.getContentResolver();
- try{
- if(number>0){
- cursor=contentResolver.query(Uri.parse(CONTENT_URI_SMS_CONVERSATIONS),THREAD_COLUMNS,null,null,"thread_iddesclimit"+number);
- }else{
- cursor=contentResolver.query(Uri.parse(CONTENT_URI_SMS_CONVERSATIONS),THREAD_COLUMNS,null,null,"thread_iddesc");
- }
- if(cursor==null||cursor.getCount()==0)return"[]";
- Stringrtn="";
- for(inti=0;i<cursor.getCount();i++){
- cursor.moveToPosition(i);
- if(i>0)rtn+=",";
- rtn+="{";
- rtn+="\"thread_id\":"+cursor.getString(0);
- rtn+=",\"msg_count\":"+cursor.getString(1);
- rtn+=",\"snippet\":\""+Escape.escape(cursor.getString(2))+"\"";
- rtn+="}";
- }
- return"["+rtn+"]";
- }catch(Exceptione){
- mBrowser.exception(getInterfaceName(),e);
- return"[]";
- }
- }
- }