5

私は現在、HTML リクエストを介してサーバーから情報をリクエストし、代わりに params 文字列を取得する 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();
    }
}

これらはすべて、1 つの例外を除いて、実際には正常に機能します。アプリはブラウザーを開き、URI をサーバーに送信します。サーバーは目的のパラメーター値を使用してアプリにリダイレクトし、インテント フィルターがアクティビティに送信し、パラメーターが正しく読み取られます。唯一の問題は、ブラウザ ウィンドウが前面に表示されたままになり、手動で閉じる必要があることです。アプリをフォアグラウンドに移動させ、ブラウザを閉じたりバックグラウンドに移動したりするために考えられるすべてのことを試しましたが、成功しませんでした。アプリが正しくフォアグラウンドに表示されるには何が欠けていますか?

4

1 に答える 1