5

ここで説明したものと同様のインテント フィルターを備えたアクティビティを使用して、ブラウザーでクリックをインターセプトし、代わりにアプリを開くオプションをユーザーに提供します。これが私のコードですAndroidManifest.xml

<activity android:name="com.scompt.ScomptIntentFilter">
    <intent-filter>
        <data android:scheme="http" android:host="www.scompt.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>

http://www.scompt.comブラウザに入ると、これは機能しません。通常どおり、ページが読み込まれます。

コマンド ラインで次のいずれかのコマンドを入力すると、予想どおり、アプリとブラウザーの間の標準のセレクターが表示されます。

adb -d shell am start -d http://www.scompt.com -a android.intent.action.VIEW
adb -d shell am start -d http://www.scompt.com

これを機能させるために他に探すべき場所はありますか?オープンソースのハブロイドで行っていることを確認しましたが、同じことをしているようです。

4

4 に答える 4

12

インテントに関しては、ユーザーがブラウザーに URL を入力することと、Web ページや電子メールなどのリンクをたどることには明確な違いがあります。

ブラウザの Web ページのリンクまたは電子メールのリンクをたどると、期待どおりにインテントが起動されます。

ただし、ユーザーがブラウザーのアドレス バーに URL を入力すると、Android は、ユーザーが特にその URL をブラウザーで開くことを望んでいると見なし、インテントを起動しません。

したがって、URL とインテント フィルターをテストする場合は、ハイパーリンクを含む静的な Web ページをセットアップするか、携帯電話にメールを送信する必要があります。

考えてみると、このシステムは Windows の既定のブラウザーの動作と同じように機能します。デフォルトのブラウザが Chrome で、Firefox もインストールされているとします。メール内のリンクをクリックすると、Chrome で開きます。ただし、Firefox を開いてアドレス バーに URL を入力して [go] をクリックすると、URL を Firefox で開く必要があるため、Chrome では開きません。

于 2012-08-17T15:51:24.380 に答える
3

http://example.comhttp://www.example.comではありません。

http://www.example.comをブラウザーに入力してみて、それが機能するかどうかを確認してください。

これは私のために働くマニフェストコードです:

<activity
    android:name="MY_APP"
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data
            android:host="MY_HOST"
            android:scheme="MY_SCHEME" />
    </intent-filter>
</activity>
于 2012-05-29T12:29:44.387 に答える
1

2014 年 1 月 28 日現在、Chrome ブラウザでまったく同じ問題が発生していました。ここで私の答えをチェックしてください

Android ブラウザーからカスタム Android アプリケーションを起動する

于 2014-01-28T11:53:27.953 に答える