根据content://sms/inbox查询收件箱短信,模拟器可以,真机不行,为啥啊?

LarryQ 2013-01-17 09:16:03
以下是代码,用Debug测试的时候模拟器(2.3)可以成功得到数据,但是4.0系统的真机得到的cursor是null.
高手帮忙看看。

Uri inboxUri = Uri.parse(Utils.SMS_URI); // 创建短信收件箱Uri对象
// Uri inboxUri = Uri.parse(Utils.INBOX_URI); // 创建短信收件箱Uri对象
ContentResolver resolver = mContext.getContentResolver();// 创建读取短信收件箱的ContentResolver对象

// 调用ContentResolver对象的查询方法获得游标
Cursor cursor = resolver.query(inboxUri, new String[] { "_id",
"address", "thread_id", "date", "protocol", "type", "body",
"read" }, // 返回的列
" address=?", // 查询条件
new String[] { safeNum },// 匹配条件
"date desc"); // 降序排列
if (cursor != null) {
while (cursor.moveToNext()) {
String smsBody = cursor
.getString(cursor.getColumnIndex("body"));
String id = cursor.getString(cursor.getColumnIndex("_id"));
// 这里没有判断当前是否处于保护状态,完善后看看要不要判断一下
password = sp.getString("password", "");
Log.i(Utils.TAG, "password==============="+password);
/**
* 在执行操作前先在数据库中删掉该条短信,防止用户看到
*/
if (smsBody.contains("+" + password)) {
resolver.delete(Uri.parse(Utils.SMS_URI), "_id=?", new String[]{id});
Message msg = new Message();
// 如果接收到了定位命令,那么就发送定位短信到安全号码
if (("dingwei+" + password).equals(smsBody)) {
Log.i(Utils.TAG, "接收到了定位命令,发送定位短信到安全号码");
//将发送定位短信的请求封装到Message对象中通过handler传给主线程
msg.what = Utils.SEND_LOCATION_SMS;

}
// 如果接收到了删除命令,那么就删除手机通讯录
else if (("shanchu*" + password).equals(smsBody)) {
Log.i(Utils.TAG, "接收到了删除命令,删除手机通讯录");
msg.what = Utils.SEND_DELETE_SMS;
}
mHandler.sendMessage(msg);
}
break;
}
...全文
780 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LarryQ 2013-01-22
  • 打赏
  • 举报
回复
教训:在开发应用的时候一定要注意应用之间的冲突。 结贴,散分,引以为戒。
LarryQ 2013-01-22
  • 打赏
  • 举报
回复
引用 9 楼 baimy1985 的回复:
权限方面原因有可能,把信息的provider和sqlitedatabase那部分代码导到一个工程里调试下,导成java工程也也行,大不了远程调试,看看你的查询是哪出问题了,query方法先打个断点慢慢调,很快的。
找到问题了,是因为和手机里的360相关功能冲突了,把360卸载就好了。
LarryQ 2013-01-22
  • 打赏
  • 举报
回复
引用 7 楼 wintergoes 的回复:
连接真机调试的时候日志里有错误提示没有?
谢谢您的建议,最后原因找到了,手机里悲催的装了360,360本身就有这个功能,所以和这个软件冲突了,我把360卸了就一切正常了。
balmy 2013-01-21
  • 打赏
  • 举报
回复
权限方面原因有可能,把信息的provider和sqlitedatabase那部分代码导到一个工程里调试下,导成java工程也也行,大不了远程调试,看看你的查询是哪出问题了,query方法先打个断点慢慢调,很快的。
whq1982 2013-01-21
  • 打赏
  • 举报
回复
引用 6 楼 qeemiaomiao 的回复:
引用 1 楼 whq1982 的回复:啥机器?申请权限了吗?有的手机好像禁止第三方应用访问短信\联系人这些东西 是中兴的u950,已经root了,但是开发的这个应用没有申请root 权限,其他的收发读写短信权限都有,你的意思是我的这个应用必须获取到root权限才能读到短线数据库是吗?等我试一下。
不是root权限,就是上面人说的manifest里声明的权限.你还是看一下logcat 有没有有用的log吧
wintergoes 2013-01-20
  • 打赏
  • 举报
回复
连接真机调试的时候日志里有错误提示没有?
LarryQ 2013-01-19
  • 打赏
  • 举报
回复
引用 1 楼 whq1982 的回复:
啥机器?申请权限了吗?有的手机好像禁止第三方应用访问短信\联系人这些东西
是中兴的u950,已经root了,但是开发的这个应用没有申请root 权限,其他的收发读写短信权限都有,你的意思是我的这个应用必须获取到root权限才能读到短线数据库是吗?等我试一下。
LarryQ 2013-01-19
  • 打赏
  • 举报
回复
引用 3 楼 qinjuning 的回复:
是读取数据库的权限额。<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 参考如下博客:http://blog.csdn.net/dearxiaofan/article/details/7252121
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 这些权限都有,而且2.3的模拟器上运行完全没问题。4.0系统中兴的手机上却读不出东西来。
LarryQ 2013-01-19
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 这些权限都有,而且2.3的模拟器上运行完全没问题。4.0系统中兴的手机上却读不出东西来。
qinjuning 2013-01-19
  • 打赏
  • 举报
回复
是读取数据库的权限额。<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 参考如下博客:http://blog.csdn.net/dearxiaofan/article/details/7252121
LarryQ 2013-01-19
  • 打赏
  • 举报
回复
是中兴的u950,已经root了,但是开发的这个应用没有申请root 权限,其他的收发读写短信权限都有,你的意思是我的这个应用必须获取到root权限才能读到短线数据库是吗?等我试一下。
whq1982 2013-01-18
  • 打赏
  • 举报
回复
啥机器?申请权限了吗?有的手机好像禁止第三方应用访问短信\联系人这些东西

80,355

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧