私は人々がウェブサイトの代わりとして使用するAndroidアプリを持っています。したがって、ユーザーがWebサイトへのURLに遭遇した場合、ブラウザーではなくアプリで「URLを開く」オプションをユーザーに提供したいと思います。つまり、ポップアップを表示して、自分のアプリとブラウザー(および場合によっては他のアプリ)のどちらかを選択できるようにします。
さまざまなソースから、正しい形式のURLをフィルタリングする「データ」フィルターを使用してアプリのアクティビティにインテントフィルターを追加する必要があることを理解しています。
問題のWebサイトはhttp://members.iracing.comであるため、次のインテントフィルターを追加しました。
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="members.iracing.com" />
</intent-filter>
</activity>
両方の属性を持つ単一の「データ」ノードを使用するなど、これらのデータフィルターのさまざまな形式を試しました。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="members.iracing.com"/>
</intent-filter>
それは単に機能していません。他に何を言うべきかわかりません。私は自分のWebサイトで簡単なHTMLページをホストし、そのWebサイトのさまざまなページ(すべて「http://members.iracing.com / ...」で始まる)へのリンクをいくつか表示しました。これらのいずれかをクリックすると、単に開きます。使用したいアプリを聞かれることなく、ブラウザで。エミュレーターと物理デバイスにアプリをインストールした後の両方で試しましたが、何も機能しません。私はこれを完全に空白の新しいAndroidプロジェクトで試しましたが、それが機能するかどうかを確認するためだけに、何もしませんでした。
その後、Webサイトに認証が必要であることに気付きました。ログインしていない場合は、 https://members.iracing.com/membersite/login.jspのログインページにリダイレクトされるため、スキームを「https」に置き換えてみました。ホストを「www.members.iracing.com」に変更してみましたが、最終的にはこれらすべての組み合わせを試しました(これが機能するかどうかはわかりませんが、この時点では必死です。 ...)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="members.iracing.com" />
<data android:host="www.members.iracing.com" />
</intent-filter>
まだ行きません。リダイレクトが適切かどうかはわかりませんが、ブラウザは明らかに最初にリダイレクトされていないサイトに移動し、次にログインページにリダイレクトしますが、アプリで開くことを選択することはできません。さらに、最初にブラウザに手動でログインした場合、リダイレクトがなく、それでも機能しません。
ここで明らかな何かが欠けていますか?なぜこれが機能しないのか、髪の毛を抜いていて、考えられるすべての可能な組み合わせを試す以外にデバッグすることはできません(私はそうしました...)。助けてくれてありがとう!