我想在Android Lollipop和Marshmallow中以编程方式删除特定联系号码的消息。
我使用以下代码来读取和删除消息......但此代码实际上并未删除消息:
public List<Sms> getAllSms() {
try {
List<Sms> lstSms = new ArrayList<Sms>();
Sms objSms = new Sms();
Uri uriSms = Uri.parse("content://sms/");
Cursor c = getActivity().getContentResolver().query(uriSms, new String[]{"_id", "thread_id", "address", "person", "date", "body"}, null, null, null);
getActivity().startManagingCursor(c);
int totalSMS = c.getCount();
if (c.moveToFirst()) {
for (int i = 0; i < totalSMS; i++) {
long id = c.getLong(0);
long threadId = c.getLong(1);
String address = c.getString(2);
String body = c.getString(5);
String date = c.getString(3);
Log.e("log>>>",
"0--->" + c.getString(0) + "1---->" + c.getString(1)
+ "2---->" + c.getString(2) + "3--->"
+ c.getString(3) + "4----->" + c.getString(4)
+ "5---->" + c.getString(5));
Log.e("log>>>", "date" + c.getString(0));
if (address.equals("1234567890")) {
// mLogger.logInfo("Deleting SMS with id: " + threadId);
getContext().getContentResolver().delete(
Uri.parse("content://sms/" + id), null, null);
Log.e("log>>>", "Delete success.........");
}
c.moveToNext();
}
} else {
throw new RuntimeException("You have no SMS ");
}
c.close();
return lstSms;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
清单权限:
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
请帮我删除邮件。
OR
建议我采用以下方法:
如果我在上述Android版本中以编程方式在后台发送消息,则不应将消息保存在已发送文件夹中或设备中的任何位置。
答案 0 :(得分:4)
我想在android lollipop和marshmallow
中以编程方式删除特定联系号码的消息
您需要编写完整的SMS客户端。
您无法实现仅删除API级别19及更高级别的邮件的应用。用户不会将您的应用程序设置为设备上的默认SMS应用程序。如果您的应用程序不是默认的SMS应用程序,那么&#34;您的应用程序无法写入SMS提供程序进行其他操作,例如将邮件标记为草稿,将其标记为已读,删除等等。&# 34;有关详情,请参阅this official blog post。
告诉我如果我在上面的Android版本中以编程方式在后台发送消息的方式。那么它不应该保存在已发送的文件夹中或设备中的任何地方
对于发送的SMS消息所发生的事情的决定是在Android,用户的默认SMS客户端以及可能的用户之间做出的。你没有得到投票。