簡體   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