執行 startActivityForResult 後,onActivityResult 馬上就被呼叫了

情況是本來用 Intent 的方式,開啓內建的連絡人列表,來完成選取連絡人的動作,但是在某些手機上會發生選完連絡人後,就停留在內建的連絡人APP中,沒有導回到原本APP中。

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));

本來以為是 Uri 路徑的問題,或是 ACTION_PICK 的問題
後來看到下面的參考網頁,才知道是原本APP中的 Activity 使用了 singleInstance 的 launchMode

在 MainAcitivty 使用 startAcitvityForResult 來開啓 SecondActivity 時,

如果 MainActivity 的 LaunchMode 是 singleInstance 或是 singleTop 的話,會發生 startAcitvityForResult 執行後,馬上就 callback onActivityResult 的情況。

馬上被 callback 的 onActivityResult 中帶入的 resultCode 會是 RESULT_CANCEL, data 也會是 null

參考網頁中下面的回覆,在使用 startActivityForResult 還有其它要注意的情況…

參考網頁
Android - startActivityForResult immediately triggering onActivityResult

0 意見:

張貼留言