5

Webページ( WebViewではなくブラウザーに表示されている)があり、通常のAndroidアプリにデータ(たとえばhttp POSTを使用)を渡したいのですが。

アプリを起動してデータを入力するだけで済みます。インテントフィルターを登録することでアプリを起動できることは知っていますが、データ受け渡しの部分で迷っています。

URLが本物である必要はありません。偽のURLで構いません。

これは、HTTPフィルターを使用してBlackBerryで実行できます。Androidで同じことをする方法はありますか?

前もって感謝します。

4

3 に答える 3

4

Webページに次のようなリンクを配置します。

<a href="my.special.scheme://xyz.com/data1/data2">

アクティビティでonCreate()は、インテントオブジェクトを介してデータにアクセスできます。

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "xyz.com"
List<String> params = data.getPathSegments(); 
String first = params.get(0); // "data1"
String second = params.get(1); // "data2"
于 2012-05-18T13:54:07.243 に答える
2

私が調査するアプローチは、アプリケーションの一部として非常に単純なHTTPサーバーサービスを実装することです。正確な目的のために小さなWebサーバーをコーディングするのは非常に簡単です。TCPポート80でリッスンし、着信接続を受け入れ\r\n\r\n、ヘッダーをスキップすることがわかるまでソケットから読み取りを続けてから、POSTデータを読み取ります。あなたのウェブページはおそらく「localhost」を介してそれにアクセスするでしょう。この方法に大きなハードルがあるかどうかはわかりませんが、簡単に検索すると、すでに小さなAndroid Webサーバーが利用可能であることがわかったので、技術的には可能だと思われます。

于 2012-05-18T07:47:35.043 に答える
1

これが私の2セントです:

実際には傍受しませんが、このアプローチは従来のインテントフィルターメカニズムを使用して機能します。

例:

  1. ブラウザはmyownscheme://myfakeurl.fake/http%3A%2F%2Factualurl.comへのリンクを開きます
  2. Androidアプリはインテントフィルターと一致し、起動されます。URL内のパラメータを解析し、デコードして「http://actualurl.com」を取得します。
  3. Androidアプリは、渡されたURLに接続し、データを取得します。

        String encodedURL = getIntent().getData().getPathSegments().get(0); //Returns http%3A%2F%2Factualurl.com
        String targetURL = Html.fromHtml(encodedURL); //Returns http://actualurl.com
        //Now do the GET and fetch the data.
    
于 2012-05-18T09:01:04.137 に答える