在执行context.getContentResolver.query()方法时出现错误。
1. 在执行context.getContentResolver.query()方法时出现错误。
07-15 18:46:13.470: E/AndroidRuntime(13624): FATAL EXCEPTION: AsyncTask #1
07-15 18:46:13.470: E/AndroidRuntime(13624): java.lang.RuntimeException: An error occured while executing doInBackground()
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.os.AsyncTask$3.done(AsyncTask.java:278)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.lang.Thread.run(Thread.java:856)
07-15 18:46:13.470: E/AndroidRuntime(13624): Caused by: java.lang.NullPointerException
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.os.Parcel.readException(Parcel.java:1333)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.content.ContentProviderProxy.query(ContentProviderNative.java:358)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.content.ContentResolver.query(ContentResolver.java:311)
07-15 18:46:13.470: E/AndroidRuntime(13624): at com.txrj.sms.manager.SmsDataManager2.getThreads(SmsDataManager2.java:25)
07-15 18:46:13.470: E/AndroidRuntime(13624): at com.txrj.sms.activity.ConversationListActivity$LoadThreadsTask.doInBackground(ConversationListActivity.java:92)
07-15 18:46:13.470: E/AndroidRuntime(13624): at com.txrj.sms.activity.ConversationListActivity$LoadThreadsTask.doInBackground(ConversationListActivity.java:1)
07-15 18:46:13.470: E/AndroidRuntime(13624): at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-15 18:46:13.470: E/AndroidRuntime(13624): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-15 18:46:13.470: E/AndroidRuntime(13624): ... 5 more
下面红色部分代码是产生错误的地方。原因是根本无法从Telephony.Threads.CONTENT_URI中查询数据。
应该使用下面绿色部分的代码来实现查询threads表。
Cursor cursor = context.getContentResolver().query(Telephony.Sms.CONTENT_URI,
new String[] {"* from threads order by date desc--"},
null, null, null);
public static List<TxrjThreads> getThreads(Context context) {
List<TxrjThreads> list = new ArrayList<TxrjThreads>();
Cursor cursor = context.getContentResolver().query(Telephony.Threads.CONTENT_URI,
new String[]{
Telephony.Threads._ID,
Telephony.Threads.DATE,
Telephony.Threads.RECIPIENT_IDS,
Telephony.Threads.MESSAGE_COUNT,
Telephony.Threads.READ,
Telephony.Threads.SNIPPET,
Telephony.Threads.SNIPPET_CHARSET,
Telephony.Threads.TYPE,
Telephony.Threads.ERROR,
Telephony.Threads.HAS_ATTACHMENT
},
null, null, Telephony.Threads.DATE + " desc");
if (cursor != null && cursor.moveToFirst()) {
do {
TxrjThreads thread = new TxrjThreads();
thread.setThreadId(getLong(cursor, Telephony.Threads._ID));
thread.setTime(getLong(cursor, Telephony.Threads.DATE));
thread.setRecipientId(getString(cursor, Telephony.Threads.RECIPIENT_IDS));
thread.setMessageCount(getInt(cursor, Telephony.Threads.MESSAGE_COUNT));
thread.setRead(getInt(cursor, Telephony.Threads.READ));
thread.setSnippet(getString(cursor, Telephony.Threads.SNIPPET));
thread.setSnippetCS(getInt(cursor, Telephony.Threads.SNIPPET_CHARSET));
thread.setType(getInt(cursor, Telephony.Threads.TYPE));
} while(cursor.moveToNext());
cursor.close();
}
return list;
}
public static long getLong(Cursor cursor, String colunName) {
return cursor.getLong(cursor.getColumnIndex(colunName));
}
public static int getInt(Cursor cursor, String colunName) {
return cursor.getInt(cursor.getColumnIndex(colunName));
}
public static String getString(Cursor cursor, String colunName) {
return cursor.getString(cursor.getColumnIndex(colunName));
}
2. 查看android.content.ContentResolver.query()方法源码。
public final Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder) {
IContentProvider provider = acquireProvider(uri);
if (provider == null) {
return null;
}
try {
long startTime = SystemClock.uptimeMillis();
Cursor qCursor = provider.query(uri, projection, selection, selectionArgs, sortOrder);
if (qCursor == null) {
releaseProvider(provider);
return null;
}
// force query execution
qCursor.getCount();
long durationMillis = SystemClock.uptimeMillis() - startTime;
maybeLogQueryToEventLog(durationMillis, uri, projection, selection, sortOrder);
// Wrap the cursor object into CursorWrapperInner object
return new CursorWrapperInner(qCursor, provider);
} catch (RemoteException e) {
releaseProvider(provider);
return null;
} catch(RuntimeException e) {
releaseProvider(provider);
throw e;
}
}
3. 查找IContentProvider.java文件所在位置。
android4.2.2\android\frameworks\base\core\java\android\content
在执行context.getContentResolver.query()方法时出现错误。的更多相关文章
- 调用具体webservice方法时时报错误:请求因 HTTP 状态 503 失败: Service Temporarily Unavailable
添加web引用会在相应项目的app.cofig文件中产生如下代码: <sectionGroup name="applicationSettings" type="S ...
- 在IE浏览器中执行OpenFlashChart的reload方法时无法刷新的解决方法
由于项目需求,需要在网页上利用图表展示相关数据的统计信息,采用了OpenFlashChart技术.OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表,用它能 ...
- 执行JDBC的executeUpdate()方法时,报错:数据类型不一致,应为number,但却为binary
该原因是因为,在拼写update语句的时候将一个number类型的字段的值赋为了null导致的,如果想将一个number类型的字清空,不能使用null,可以使用“”来替代.
- hive运行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException:
hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Jo ...
- Context.managedQuery()和context.getContentResolver()获取Cursor关闭注意事项
在获取图片缩略图时,获取游标并进行相关的操作. Cursor cursor = context.getContentResolver().query(MediaStore.Images.Thumbna ...
- 执行发送邮件Send方法时,报错:邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com
.net代码在执行发送邮件Send方法时,往往出现这个的报错: 邮箱不可用. 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com 这个问题应该是smtp的设置问 ...
- PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
1.安装 PDO 数据库抽象层 PDO - PHP Data Object 扩展类库为 PHP 访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,针对不同的数据库服务器使用特定的 ...
- MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?
原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...
- InfluxDB执行语句管理(query management)
本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 17 部分: InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 Influ ...
随机推荐
- windows取证
工具网站 : http://www.ntsecurity.nu/toolbox/ 命令行历史 :命令行模式 CMD 中使 doskey /history 命令可以显示前面输入的命令情况(例如使用 cl ...
- ubuntu 下python环境的切换使用
如何在Anaconda的python和系统自带的python之间切换 一般ubuntu下有三种python环境,1. 系统自带python2,3;在/usr/bin路径下:2. anaconda下安装 ...
- Maximum Submatrix & Largest Rectangle
相关题型 问题一(最大和子矩阵) : 有一个 m x n 的矩阵,矩阵的元素可正可负.请找出该矩阵的一个子矩阵(方块),使得其所有元素之和在所有子矩阵中最大.(问题来源:http://acm.pku. ...
- 如何查看Isilon的节点的CPU的信息?
使用Isilon自带的命令 isi_hw_status 使用如下的命令 dmidecode --type processor 笔者只是想了解一下F800的CPU有多少个core.上面的命令都可以获得这 ...
- win7系统不能用telnet命令的两种解决方法
电脑专业人员对telnet命令都不陌生了,Telnet当成一种通信协议,在日常工作中,经常面对网络问题的人都会用到telnet命令,因为简单有效,可以帮助更快的找出问题.要是在使用过程中碰到win7纯 ...
- Windows10 安装Jupyter
官方文档:https://jupyter-notebook.readthedocs.io/en/stable/ https://github.com/jupyter/jupyter/wiki/A-ga ...
- SQL 连接操作 及 查询分析
- Spring(十九):Spring AOP(三):切面的优先级、重复使用切入点表达式
背景: 1)指定切面优先级示例:有的时候需要对一个方法指定多个切面,而这多个切面有时又需要按照不同顺序执行,因此,切面执行优先级别指定功能就变得很实用. 2)重复使用切入点表达式:上一篇文章中,定义前 ...
- 文字编码和Unicode
文字编码和Unicode 说明文字: https://blog.csdn.net/fengzhishang2019/article/details/7859064 Java 程序: https://w ...
- ASP入门(二)-创建Access数据库
通常来说,ASP程序是搭配Access数据库来使用的,因此在安装完ASP环境后,为了方便建立和管理数据库,我们还需要安装Access数据库. Access是Microsoft Office家族中的一员 ...