我目前正在開發一個Android應用程序,通過HTML請求從服務器請求信息並獲取一個參數字符串作爲回報。在啓動過程中會發生這種情況,以便在首次運行應用程序時配置該應用程序。從瀏覽器重定向到Android應用程序
要將請求發送給我打電話,從我的應用程序的主要活動的onCreate方法如下服務器:
String URL = "http://myserver.mydomain.com/users/start";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
startActivity(browserIntent);
的服務器,一個Rails應用程序,獲取所需的參數值,並重定向回該應用程序會與下面的語句:
redirect_to "http://myappname.mydomain.com/?#{mobile_params.to_query}"
我在AndroidManifest.xml中創建的意圖過濾器對於該處理來自服務器返回的參數的活動。該意圖過濾器看起來像:
<activity
android:name=".StartFromUriActivity"
android:launchMode="singleTop"
android:noHistory="true"
android:screenOrientation="behind"
android:theme="@style/NoTitle"
android:exported="true" >
<intent-filter>
<data android:scheme="http" android:host="myappname.mydomain.com" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
最後,我StartFromUriActivity.java的前幾行是這樣的:
public class StartFromUriActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri URIdata = getIntent().getData();
if(URIdata != null) {
parameter1value = URIdata.getQueryParameter("param1");
}
finish();
}
}
的這一切實際工作很好,但有一個例外。該應用程序打開瀏覽器,將URI發送到服務器,該服務器使用所需的參數值重定向到應用程序,意圖過濾器指向該活動並正確讀取參數。唯一的問題是瀏覽器窗口留在前臺,我必須手動關閉它。我嘗試了所有我能想到的方法來讓我的應用程序來到前臺,並讓瀏覽器關閉或無法成功地進入後臺。我錯過了什麼會導致我的應用程序正確地被帶到前臺?
我覺得android:allowTaskReparenting =「true」會處理這個嗎?我不完全確定,但android文檔談論你所描述的問題。 –
謝謝dsschnau,這沒有解決問題,但它指出我在正確的方向 – Blaze
太棒了!很高興我能幫上一點忙。 –