1. ホーム
  2. android

[解決済み] Androidで自分だけのURIスキームを実装する方法

2022-04-23 07:28:25

質問

というようなURIを定義したいとします。

myapp://path/to/what/i/want?d=This%20is%20a%20test

は、私自身のアプリケーション、またはサービスが処理する必要があります。このスキームは "myapp" であって "http" または "ftp" . これはまさに私が意図していることで、Android OSのためにグローバルに独自のURIスキーマを定義することです。これは可能なのでしょうか?

これは、たとえばWindowsシステムですでに行われているSkypeなどのプログラムに類似しています( skype:// ) やトレントダウンローダープログラム ( torrent:// ).

解決方法は?

これは非常に可能です。AndroidManifest.xmlでURIスキームを定義し、そのスキームを使用するために <data> 要素を使用します。 でインテント・フィルタを設定します。 <data> 要素に記入され、独自のスキームを作成することができるようになります。 ( インテント・フィルタとインテント解決について詳しくはこちら .)

以下に簡単な例を示します。

<activity android:name=".MyUriActivity">
    <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="myapp" android:host="path" />
    </intent-filter>
</activity>

暗黙のインテントがどのように動作するかというと、少なくともひとつのアクションとひとつのカテゴリーを定義する必要があります。ここでは、アクションとしてVIEWを選び(何でも構いませんが)、DEFAULTカテゴリーを追加するようにしました(これはすべての暗黙のインテントに必要なため)。 また、BROWSABLEというカテゴリを追加したことにも注目してください。これは必須ではありませんが、ブラウザからURIを開くことができるようになります(気の利いた機能です)。