代码之家  ›  专栏  ›  技术社区  ›  Vikas Patidar

在android中,有多少数据库列与SMS相关?

  •  22
  • Vikas Patidar  · 技术社区  · 15 年前

    我想从我的手机上阅读所有的信息和它们各自的细节。 为此,我使用的Uri如下:

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

    但我不知道数据库中有多少列与这个uri相关。

    我想显示以下信息:

    1. 消息类型
    2. 消息正文
    3. 时间戳

    6 回复  |  直到 15 年前
        1
  •  50
  •   Vikas Patidar    15 年前

    包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();
        }
    }
    

    运行此代码段后,我得到了以下列:

    alt text

        2
  •  25
  •   Dennis Winter    15 年前

    您应该能够在光标中旋转并查找自己:

    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();
    
        3
  •  6
  •   Sufian    12 年前

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

    也就是说,如果你真的想深入研究,你可以看看 source code

    但还是要注意这个警告: http://android-developers.blogspot.com/2010/05/be-careful-with-content-providers.html .

        4
  •  3
  •   Shwarz Andrei    10 年前

    试试这个:

    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);}
    }
    

    列名:

    列名:线程id

    列名:地址

    列名:日期

    列名:发送日期

    列名:sc_timestamp

    列名:协议

    列名:read

    列名:状态

    列名:类型

    列名:主题

    列名:服务中心

    列名:子id

    列名:错误代码

    列名:见

    列名:lgeMsgType

    列名:lgeCreated

    列名:lgeReceived

    列名:lgeAction

    列名:lgeMac

    列名:doInstalled

    列名:lgepinemaninct

    列名:服务信息发送者地址

    列名:lgeCallbackNumber

    列名:sms_imsi_data

        5
  •  0
  •   Lau    8 年前

    DatabaseUtils.dumpCursor(cursor); 在控制台上显示具有值的所有列

        6
  •  -1
  •   kalabog76    11 年前

    Android 4.4.2手机

    _身份证 地址 m_尺寸 人 日期 发送日期 协议 地位 类型 主题 身体 服务中心 sim卡id 错误代码 看到

    推荐文章