我一直在研究SMS应用程序。一切顺利,直到昨天,当我将Nexus 4更新为Android 4.4 KitKat时。将SMS标记为已读/未读以及删除线程中的所有消息之类的功能已停止工作。为什么会这样呢?它可以在其他三星设备(不运行KitKat)上工作。这是我的代码,用于将邮件标记为已读或未读:public static void markRead(final Context context, final Uri uri, final int read) { Log.d(TAG, "markRead(" + uri + "," + read + ")"); if (uri == null) { return; } String[] sel = Message.SELECTION_UNREAD; if (read == 0) { sel = Message.SELECTION_READ; } final ContentResolver cr = context.getContentResolver(); final ContentValues cv = new ContentValues(); cv.put(Message.PROJECTION[Message.INDEX_READ], read); try { cr.update(uri, cv, Message.SELECTION_READ_UNREAD, sel); } catch (IllegalArgumentException e) { Log.e(TAG, "failed update", e); Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); }}为了删除线程中的所有消息,我使用:public static void deleteMessages(final Context context, final Uri uri, final int title, final int message, final Activity activity) { Log.i(TAG, "deleteMessages(..," + uri + " ,..)"); final Builder builder = new Builder(context); builder.setTitle(title); builder.setMessage(message); builder.setNegativeButton(android.R.string.no, null); builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int which) { final int ret = context.getContentResolver().delete( uri, null, null); Log.d(TAG, "deleted: " + ret); if (activity != null && !activity.isFinishing()) { activity.finish(); }
1 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
使用Android 4.4,SMS发生了一些变化。其中一个事实是,只有注册为默认SMS应用程序的应用程序才能访问提供程序。
在此处查看有关SMS更改的简短说明。
检查此链接可了解更深入的信息。这篇解释了您的应用程序要成为默认消息传递应用程序需要满足的条件。
这是官方的好玩的东西。
因此,如果您的应用不是默认的消息传递应用,这就是为什么指定功能停止工作的原因。
可以在此处的答案中找到默认提供者限制的可能解决方法。
- 1 回答
- 0 关注
- 251 浏览
添加回答
举报
0/150
提交
取消