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