Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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关联?_Android_Sms_Messages - Fatal编程技术网

android中有多少数据库列与SMS关联?

android中有多少数据库列与SMS关联?,android,sms,messages,Android,Sms,Messages,我想阅读手机上的所有信息及其各自的详细信息。 为此,我使用如下Uri: Uri sms = Uri.parse("content://sms/"); 但我不知道数据库中有多少列与此uri关联 我想显示以下信息: 消息类型 发送者号码 消息体 时间戳 任何人都能列举全部列名吗?content://sms不是官方Android API的一部分,因此使用它不是一个好主意。它可能会停止工作,一些使用自己的短信实现的手机(可能是HTC Sense?)可能有自己的内容提供商,无法使用您的代码 这就是说,如

我想阅读手机上的所有信息及其各自的详细信息。 为此,我使用如下Uri:

Uri sms = Uri.parse("content://sms/");
但我不知道数据库中有多少列与此uri关联

我想显示以下信息:

  • 消息类型
  • 发送者号码
  • 消息体
  • 时间戳

  • 任何人都能列举全部列名吗?

    content://sms
    不是官方Android API的一部分,因此使用它不是一个好主意。它可能会停止工作,一些使用自己的短信实现的手机(可能是HTC Sense?)可能有自己的内容提供商,无法使用您的代码

    这就是说,如果你真的想深入研究它,你可以看看它的答案


    但是,请再次注意以下警告:。

    您应该能够通过光标旋转并查找自己:

    mCursor = managedQuery(sms, null, null, null, null);
    
    StringBuffer info = new StringBuffer();
    for( int i = 0; i < mCursor.getColumnCount(); i++) {
        info.append("Column: " + mCursor.getColumnName(i) + "\n");
    }
    Toast.makeText(getApplicationContext(), info.toString(), Toast.LENGTH_LONG).show();
    
    mCursor=managedQuery(sms,null,null,null,null);
    StringBuffer info=新的StringBuffer();
    对于(int i=0;i
    package com.readsms

    import android.app.Activity;
    import android.content.ContentResolver;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.util.Log;
    
    public class ReadSMS extends Activity 
    {
        private static final String tag = "Whozzat";
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            Uri sms = Uri.parse("content://sms/inbox");
            ContentResolver cr = this.getContentResolver();
            Cursor c = cr.query(sms, null, null, null, null);
            for (int i = 0; i < c.getColumnCount(); i++)
            {
                Log.v(tag, c.getColumnName(i).toString());
            }
            c.close();
        }
    }
    
    导入android.app.Activity;
    导入android.content.ContentResolver;
    导入android.database.Cursor;
    导入android.net.Uri;
    导入android.os.Bundle;
    导入android.util.Log;
    公共类ReadSMS扩展了活动
    {
    私有静态最终字符串tag=“Whozzat”;
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Uri sms=Uri.parse(“content://sms/inbox");
    ContentResolver cr=this.getContentResolver();
    游标c=cr.query(sms,null,null,null,null);
    对于(int i=0;i
    运行此代码段后,我得到了以下列:

    安卓4.4.2手机 因为这是特定于版本/内容的,所以不要依赖数字索引键

    _身份证 线程id 地址 m_尺寸 人 日期 发送日期 协议 阅读 地位 类型 答复(路径)(存在) 主题 身体 服务中心 锁定 模拟识别码 错误代码 看到 ipmsg_id

    试试这个:

    我浏览了一下列名,得到了它:

    列名称:\u id

    列名称:线程id

    列名:地址

    列名:个人

    列名称:日期

    列名称:发送日期

    列名称:sc\u时间戳

    列名称:协议

    列名:read

    列名称:状态

    列名称:类型

    列名称:回复路径存在

    列名:主题

    列名:body

    栏目名称:服务中心

    列名称:已锁定

    列名称:子列id

    列名称:错误代码

    列名:见

    列名称:lgeMsgType

    列名称:LGESID

    列名称:lgeCreated

    列名:lgeExpires

    列名称:lgeReceived

    列名称:lgeAction

    列名:lgeSec

    列名:lgeMac

    列名:lgeDoc

    列名称:doInstalled

    列名:lgepineremincnt

    列名称:icc上的索引

    列名称:服务消息发送者地址

    列名称:lgeCallbackNumber


    列名称:sms\u imsi\u数据

    如果您只想知道特定游标中存储了什么,只需使用
    DatabaseUtils.dumpCursor(游标)
    要在控制台上显示所有带有值的列

    访问SMS存储的首选方式是什么?我们应该手动创建对话列表吗?我花了很多时间使用调试器来找出字段。这非常有用:)
    public void showAllCNames (View v){
            Uri uri = Uri.parse("content://sms/");
            final Cursor cur = getContentResolver().query(uri, null, null, null, null);
            for (String s : cur.getColumnNames()){Log.d("COLUMN_NAME", s);}
    }