2013-04-07 64 views
2

我已經做了一個應用程序,可以啓動一個新的電子郵件意圖按鈕單擊,我已經在幾個設備上測試它,它似乎工作正常,除了它在星系2和銀河3崩潰。這是我的代碼檢查互聯網訪問,然後調用意圖。Android電子郵件意圖崩潰在銀河設備

ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 
if((cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isAvailable() && cm.getActiveNetworkInfo().isConnected())) 
{ 
    Log.d("Main", "Start Email"); 

    Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
    sendIntent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail"); 
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { monkey.getSendTo() }); 
    sendIntent.setData(Uri.parse(monkey.getSendTo())); 
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "TFS note"); 
    sendIntent.setType("plain/text"); 
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Sent From TFS\n"); 
    startActivity(sendIntent); 

} else{//toast if there is no internet 
    Toast.makeText(getActivity().getBaseContext(),"No Internet\n access", 
    Toast.LENGTH_SHORT).show(); 
} 

看起來,我認爲它沒有細化的Gmail應用程序,因此無法啓動的意圖星系的設備,所以我想知道我怎麼能去製作一個通用的意圖打開任何形式的電子郵件應用程序,或者如果有更好的方式使其與銀河設備兼容。

回答

4

請刪除:

sendIntent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail"); 

也就是說侮辱用戶,迫使他們使用Gmail。它是用戶的設備,用戶的帶寬,用戶的電池,用戶的數據和用戶的時間。請允許用戶發送用戶的數據,但用戶希望。

此外,該活動可能不存在於所有版本的Gmail中,並且該活動可能無法在所有版本的Gmail中導出。

另外,請更改:

sendIntent.setType("plain/text"); 

到:

sendIntent.setType("text/plain"); 

plain/text不是有效的MIME類型。

你也應該擺脫所有ConnectivityManager的東西。並非用戶想要共享此信息的每種方法都需要立即連接到Internet。

這與你的崩潰沒有任何關係,這是因爲你所引用的活動(com.example.tfs.MainCalActivity)在APK中不存在。

+0

好的謝謝。我知道了,我確實發佈了錯誤的日誌貓,對不起,從我正在處理的另一個項目中得到的結果 – user2175493 2013-04-07 15:30:16

+0

請注意,只更改MIME類型表明有意查看文本文件。這可能不會顯示電子郵件客戶端。您可以通過將操作指定爲「Intent.ACTION_SEND」來解決這個問題,但這也是一個制定不當的意圖。另見[Mark和我之間的討論](http://stackoverflow.com/q/1793752/154306)。 – 2013-04-07 15:37:14

相關問題