繁体   English   中英

Android:尝试在特定设备上发送MMS时偶尔会遇到ActivityNotFoundException

[英]Android: ActivityNotFoundException occasionally encountered when trying to send MMS on specific devices

我正在使用精彩的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 Bionic仿真器工作正常,但它是该领域中存在问题的设备之一。

我想知道是否有人经历过类似的事情并有建议的解决方法? 或者,如果某人有在Android上发送MMS的方法,该方法适用于所有设备/运营商。

(目前我只是抓住异常并让用户知道我无法使用他们的设备发送彩信。)

ps我在另一个论坛中看到有人建议只删除意图的类名。 问题在于,当你这样做时,各种类型的应用程序都表示他们可以处理意图(例如Evernote),而实际上我真的只想要彩信或什么都没有。

用INTENT写下来

intent.setPackage("com.android.mms");

代替

intent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");

你可以做...

  1. 继续尝试这种方法,但捕获ActivityNotFoundException。
  2. 如果您收到ActivityNotFoundException,请尝试启动用户可能已安装的其他应用程序(VZMessages,Zlango Messaging,Handcent,ChompSMS等)。
  3. 如果所有这些都失败了,请让您的用户知道您要发送彩信,然后启动意图而不指定课程。 这样,用户可以选择实际发送MMS消息的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM