【问题标题】:How to read SIM SENT SMS Messages from android programmatically?如何以编程方式从 android 读取 SIM SENT SMS 消息?
【发布时间】:2015-04-11 12:56:16
【问题描述】:

我正在尝试加载所有 SIM SENT SMS 消息,但我不知道内容提供商 URI 是什么,除了 “content://sms/icc”和“content://sms/sim”,这些 uri 只加载收到的消息。

如何加载 SIM 卡发送的消息??

【问题讨论】:

    标签: android sms


    【解决方案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;
    }
    

    【讨论】:

    • 感谢您的快速回复,我知道如何从手机和 SIM 中读取短信,但我确实需要从 SIM 发送表中读取短信,您有什么想法吗??再次感谢
    【解决方案2】:

    您可以使用此 URI 在 android 中访问 已发送消息。


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


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多