我正在使用精彩的ACRA库报告用户在我的应用测试版中遇到的任何错误。到目前为止它显示的是一些用户在发送MMS消息时遇到问题,而大多数用户没有。 特别是我发现使用Droid Bionic设备的用户遇到了这个错误,但是当我在本地运行Droid Bionic仿真器时,我没有遇到任何问题。 我用来启动MMS活动的代码是......
File imageFile = new File(getContext().getFilesDir() + File.separator + fileName);
Uri uri = Uri.fromFile(imageFile);
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
sendIntent.putExtra("sms_body", "");
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.setType("image/png");
getContext().startActivity(sendIntent);
我看到的错误 - 只是非常偶然 - 是:
android.content.ActivityNotFoundException:无法找到显式活动类{com.android.mms / com.android.mms.ui.ComposeMessageActivity};你有没有在AndroidManifest.xml中声明这个活动?
我怀疑是某些运营商可能修改了Android并覆盖/禁用了默认的MMS活动。我真的没有一个好的测试方法,因为我亲自测试过的所有物理设备和运营商对此代码没有任何问题。正如我所提到的,Droid仿生仿真器工作正常,但它是该领域中存在问题的设备之一。
我想知道是否有人经历过类似的事情并且有建议的解决方法?或者,如果某人有在Android上发送适用于所有设备/运营商的MMS的方法。
(目前我只是抓住异常并让用户知道我无法使用他们的设备发送彩信。)
P.S。我在另一个论坛中看到有人建议只删除意图的类名。问题在于,当你这样做时,各种类型的应用程序都表示他们可以处理意图(例如Evernote),而实际上我真的只想要彩信或什么都没有。
答案 0 :(得分:3)
使用INTENT
写下来intent.setPackage("com.android.mms");
而不是
intent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
答案 1 :(得分:1)
你可以......