在Android中, 操作短信数据库需要具有相关的权限。在代码中进行如下操作:
- 添加权限
在你的AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
- 操作数据库
插入信息
ContentValues values = new ContentValues();
//发件人电话号
values.put("address", "1000523");
//短信内容
values.put("body", "您的验证码是:1234");
//短信状态
values.put("status", "1");
//将内容插入到数据库中
getContentResolver().insert(Uri.parse("content://sms/sent"), values);
读取信息
Cursor cursor = getContentResolver().query(Uri.parse("content://sms/"), null, null, null, null);
if(cursor != null){
while(cursor.moveToNext()){
String address = cursor.getString(cursor.getColumnIndex("address"));
String body = cursor.getString(cursor.getColumnIndex("body"));
}
cursor.close();
}
注意:无论你是更新数据库还是读取短信,都需要在你的Android设备上授予你的应用程序相应的权限。一般来说, 插入的短信不会显示在内置短信应用中。
退回到原问题, 你无法读取到插入的短信可能有以下原因:
- 权限有误或者权限未授予
- 插入短信字段有问题。确保你插入的字段是正确的,并包含所有的必要信息。笔误也会引发问题。
- 数据库未更新。试试重启你的Android设备看看问题是否解决。有一些情况下,我们的更改并不会立刻反映在数据库中。
- 插入短信到错误的数据库。如果你把短信插入到发送短信发送数据库,而你试图从收到短信的数据库去读取, 自然是读取不到的。
你可能遇到的问题是没有正确的使用适当的权限和API方法,在插入和查询短信数据库时都需要相应的权限。请按照以下步骤来解决你的问题:
-
在AndroidManifest.xml文件中,声明需要的权限:
<uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.WRITE_SMS"/>
- 插入短信:
ContentValues values = new ContentValues();
values.put("address", "number");
values.put("body", "message");
getContentResolver().insert(Uri.parse("content://sms/inbox"), values);
-
读取短信:
Cursor cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null); if(cursor.moveToFirst()){ do{ String number = cursor.getString(cursor.getColumnIndex("address")); String body = cursor.getString(cursor.getColumnIndex("body")); Log.d("SmsContent", "number: " + number + " body: " + body); }while(cursor.moveToNext()); } cursor.close();
请注意,由于Android 4.4(API级别19)开始,应用程序只能读取对它们的短信文件夹有写入权限的那些插入的SMS。本机SMS应用是唯一可以读取缓存,发送,接收和短信的应用。所以如果你的设备是Android 4.4或以上,可能会遇到只能读取你应用插入的短信,而不能读取接收或者发送的短信。
以上就是关于android 往短信数据库中插入一条短信但是读取不到的解决办法,通过适当的声明权限以及使用正确的API和方法来解决问题。希望对你有所帮助。
如果问题还未解决,可能需要找专业的技术人员来检查和解决,或者可直接联系阿里云代理商进行技术咨询和支持。在遇到问题时,一定要有耐心,相信一定能找到解冑办法。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/160798.html