web-dev-qa-db-ja.com

androidでカスタムURLスキームをテストする方法

私は、カスタムURLスキームが「appname://」のようなアプリケーションを必要としています。

多くのことを検索し、関連する質問もたくさん見つけましたが、それでも問題が解決しません。

ブラウザからこのURLスキームをテストするにはどうすればよいですか?現在、ブラウザのアドレスバーに「appname://」と入力すると、直接Google検索に移動します。

私はこれを私のAndroidManifest.xmlに持っています:

<intent-filter> 
         <action Android:name="Android.intent.action.VIEW" /> 
         <category Android:name="Android.intent.category.DEFAULT" /> 
         <category Android:name="Android.intent.category.BROWSABLE" /> 
         <data Android:scheme="appname"
             Android:Host="appnamehost"/>
</intent-filter>
17
DI Developers

これはadbを使用すると簡単です。このコマンドを確認してください:

adb Shell am start -a Android.intent.action.VIEW -d "appname://appnamehost" your.package.name

ただし、スキーマとしてパッケージ名を使用する必要があります。したがって、競合がないことを確実に確認できます(詳細には、インテントチューザー)。

複数のデバイスがある場合は、adb devicesを実行する必要があります。これにより、次のような出力が得られます。

List of devices attached
1645e1d0b86b    device
S9WM00904386    device

次に、上記のIDを使用して、-sパラメータで具体的なデバイスをアドレス指定できます。これにより、次のようなコマンドラインが生成されます。

adb -s S9WM00904386 Shell [...]

ブラウザのリンクの場合、これも簡単です。次のhtml行を追加するだけです。

<a href="appname://appnamehost">Click me</a>

URLのフォールバックが必要な場合は、インテントURLを試すことができます。

<a href="intent://apphostname#Intent;scheme=appname;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>

これにより、スキーマが一意でなくてもアプリが開きます。アプリがインストールされていない場合は、example.comが開きます。

40
rekire