1

すべてのSIM送信SMSメッセージを読み込もうとしていますが、 「content:// sms / icc」と「content:// sms / sim」以外のコンテンツプロバイダーURIが何であるかわかりません。これらのURIは、受信したメッセージのみを読み込みます。

SIM送信メッセージをロードするにはどうすればよいですか?

4

2 に答える 2

1

このコードを使用する

それは私のために働きます、そしてそれはあなたが読むのを助けるでしょうSMS

 /* location of sms inbox*/    
public static final String CONTENT = "content://sms/inbox";
/*location of sms on sim card */
public static final String SIMCONTENT = "content://sms/sim";
/*name of address field*/
public static final String ADDRESS = "address";
/*name of body field*/
public static final String BODY = "body";

/*cursor incoming sms*/
private static Cursor inboxCursor;
/*cursor sms on sim card*/
private static Cursor simCursor;

   initCursors(Context context){
        inboxCursor = context.getContentResolver()
                        .query(Uri.parse(CONTENT), null, null, null, null);
        simCursor = context.getContentResolver()
                        .query(Uri.parse(SIMCONTENT), null, null, null, null);  
}

 /**
  * Reading SMS from telephone memory.
  * @return a Map object where key - telephone number, value - a  List 
  * consisting of messages.
  */
public Map<String, List<String>> readTelephoneSms() {
    Map<String, List<String>> smsData = new HashMap<String, List<String>>();
    while (inboxCursor.moveToNext()) { 
        if(smsData.containsKey(inboxCursor.getString(inboxCursor.getColumnIndex(ADDRESS)))){
            smsData.get(inboxCursor.getString(inboxCursor.getColumnIndex(ADDRESS)))
                    .add(inboxCursor.getString(inboxCursor.getColumnIndexOrThrow(BODY)));
        }else{
            List<String> data = new ArrayList<String>();
            data.add(inboxCursor.getString(inboxCursor.getColumnIndexOrThrow(BODY)));
            smsData.put(inboxCursor.getString(inboxCursor.getColumnIndex(ADDRESS)), data);
        }
    }

    return smsData;
}

/**
  * Reading SMS from Sim card memory.
  * @return a Map object where key - telephone number, value - a  List
  * consisting of messages.
  */
public Map<String, List<String>> readSimSms() {
    Map<String, List<String>> smsData = new HashMap<String, List<String>>();
  while (simCursor.moveToNext()) { 
    if(smsData.containsKey(simCursor.getString(simCursor.getColumnIndex(ADDRESS)))){
        smsData.get(simCursor.getString(simCursor.getColumnIndex(ADDRESS)))
                .add(simCursor.getString(simCursor.getColumnIndexOrThrow(BODY)));
    }else{
        List<String> data = new ArrayList<String>();
        data.add(simCursor.getString(simCursor.getColumnIndexOrThrow(BODY)));
        smsData.put(simCursor.getString(simCursor.getColumnIndex(ADDRESS)), data);
    }           
}
    return smsData;
}
于 2013-01-12T12:20:22.763 に答える
0

この URI を使用して、Android で送信されたメッセージにアクセスできます。


Uri sentURI = Uri.parse("content://sms/sent");


于 2015-04-11T04:56:16.693 に答える