Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何查找SMS的内容URI?_Android - Fatal编程技术网

Android 如何查找SMS的内容URI?

Android 如何查找SMS的内容URI?,android,Android,有没有办法为特定android设备的SMS数据找到一个内容URI? 例如,我能够找到包含以下所有消息的数据库 SMS DB位于/dbdata/databases/com.android.providers.telephony/mmssms.DB 但是,我想知道内容URI,而不是实际位置(例如。contents://sms). 这可能吗?如果没有,我如何从具有不同和未知内容URI的不同设备收集有关存储的SMS消息的信息 例如,以下是一些供应商的内容URI: LG:content://com.lge

有没有办法为特定android设备的SMS数据找到一个内容URI? 例如,我能够找到包含以下所有消息的数据库

SMS DB位于
/dbdata/databases/com.android.providers.telephony/mmssms.DB

但是,我想知道内容URI,而不是实际位置(例如。contents://sms). 这可能吗?如果没有,我如何从具有不同和未知内容URI的不同设备收集有关存储的SMS消息的信息

例如,以下是一些供应商的内容URI:

  • LG:
    content://com.lge.messageprovider/msg/inbox

  • 三星:
    content://com.sec.mms.provider/message

  • 三星Galaxy A:
    content://com.btb.sec.mms.provider/message

  • 概述:
    content://sms/inbox

  • 为什么不使用
    Contentresolver
    的uri解析器,尤其是您知道内容字符串。 尝试此操作(与
    光标
    结合使用):

    Cursor Cursor=getContentResolver().query(Uri.parse()content://sms/inbox)、空、空、空、空);
    cursor.moveTofirst();
    //阅读收件箱中的所有邮件
    做
    {
    字符串消息=”;
    //从每条消息的所有可用列中读取所有数据
    对于(int i=0;i

    别忘了向您的AndroidManifest.xml添加阅读\u SMS权限询问的全部要点是SMS消息实际上并不位于
    content://sms
    适用于某些供应商。具体哪个供应商?这段代码在LG(GT540、P920)、三星(S2、S3 mini、Trend)和HTC ONE上运行得非常好
    Cursor cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
        cursor.moveTofirst();
    
        //read all messages in your inbox
        do
        {
            String message = "";
            //read all data from all available columns for each message
            for (int i = 0; i < cursor.getColumnCount(); i++)
            {
                message += " " + cursor.getComulnName(i) + ": " + cursor.getString(i);
                //here do wathever you want with your message string
            }
        }
        while(cursor.moveToNext());
    
        cursor.close();