2013-05-18 93 views
7

當彈出的共享出現時,我在WhatsApp上成功共享內容,但仍返回RESULT_CANCELLED。使用Gmail發送電子郵件時,結果相同。StartActivityForResults始終爲Intent.ACTION_SEND返回RESULT_CANCELLED

調用共享的意圖,ACTION_SENDstartActivityForResult總是返回CANCELLED

Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType("text/plain"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_TITLE, "Taxeeta, Cab Around The Curb"); 
    sharingIntent 
     .putExtra(
      android.content.Intent.EXTRA_TEXT, 
       "Hiring a cab no longer needs you to wait on call centers, or pay a" 
       + " convenience (yeah right!!) charge. Taxeeta connects you" 
       + " to drivers directly, for a quick book experience. With Taxeeta" 
       + " you can take matters in your own hands (literally). To download" 
       + " the app for your phone visit http://www.taxeeta.com"); 
    startActivityForResult(Intent.createChooser(sharingIntent, "Share and earn a extra Priviledge"), 111); 

ActivityForResult代碼

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 111) { 
     if (resultCode == RESULT_OK) { 
      Toast.makeText(this, "Ok DUDE", Toast.LENGTH_LONG).show(); 
     } else if (resultCode == RESULT_CANCELED) { 
      Toast.makeText(this, "Oversmart Eh!!", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

回答

0

我有同樣的問題,我認爲這個結果將始終堅持「取消」,因爲即使郵件被髮送或者沒有活動將被殺死。

+0

我也這麼認爲,但我認爲問題在於電子郵件應用程序(Gmail)需要提供結果,然後需要將結果轉發給Chooser,然後需要將它傳遞給您的應用程序。我認爲谷歌沒有考慮將價值傳遞給客戶。 – RelativeGames

27

startActivityForResult()只適用於旨在被稱爲這種方式的活動。如果您正在調用的活動沒有顯式返回結果,則會得到默認結果RESULT_CANCELED。顯然ACTION_SEND不是被設計成這樣調用的。 documentation對於ACTION_SEND表示不生成輸出(即:不生成結果)。

documentationActivity.startActivityForResult()

注意,此方法只能與 被定義爲返回一個結果意向協議來使用。在其他協議(如 ACTION_MAIN或ACTION_VIEW)中,當您期望 時可能不會得到結果。例如,如果您正在啓動的活動使用 singleTask啓動模式,它將不會在您的任務中運行,因此您將立即收到取消結果 。

+0

唯一的地方,它都被清除了,謝謝! –