Я использую замечательную библиотеку 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 работает нормально, но это было одно из устройств в этой области, которое имело проблему.
Мне интересно, сталкивался ли кто-нибудь с чем-то подобным и предложил ли это обходное решение? Или если у кого-то есть способ отправки MMS на Android, который работает на всех устройствах / носителях.
(Пока я просто ловлю исключение и сообщаю пользователю, что я не могу отправить MMS с его устройством.)
p.s. Я видел на другом форуме кого-то, кто предлагал просто удалить имя класса для намерения. Проблема в том, что когда вы делаете это, все и все другие типы приложений говорят, что они могут справиться с намерением (например, Evernote), когда на самом деле я действительно просто хочу MMS или ничего.