web-dev-qa-db-ja.com

Android myapp:// http://という形式でカスタムURLスキームを作成する方法

ほとんどのカスタムURLスキームのQ&Aを調査しましたが、考えられる答えが見つかりません。

ブラウザ(モバイルデバイスの任意のURL)で特定のURLをクリックしてアプリを起動したいのですが、指定されたURLは、IOS appと次のようになります。

"myapp:// http://www.name.com/path/path2/ "

「myapp:// http://」を処理して適切なインテントフィルターを作成する方法がわからないので、試したすべてが機能しません。助けていただければ幸いです。関連する回答を逃した場合は、謝罪を除いてください。

これは私がこれまでに試したものです:

      <activity
        Android:name="com.myapp.test.SplashScreen"
        Android:exported="true"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait"
        Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Test for URL scheme -->
        <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:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="http" />
            <data
                Android:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="https" />

            <data Android:scheme="myapp" />
        </intent-filter>
        <!-- End Test for URL scheme -->
    </activity>

注:私はexported:trueを使用して/使用せずに試しました

16
EviatarS

CommonsWareが言ったように、Schemeを作成するために必要な特定のURIは有効なURIではないため、スキームは機能せず、アプリケーションは起動しませんでした。この説明の後、サーバー側の担当者はURIをmyapp:// ...に変更することを確信し、魔法のように機能しました:)。

アクティビティは次のようになります。

 <activity
    Android:name="com.myapp.test.SplashScreen"
    Android:exported="true"
    Android:label="@string/app_name"
    Android:screenOrientation="portrait"
    Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />

        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- Test for URL scheme -->
    <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" />
    </intent-filter>
    <!-- End Test for URL scheme -->
</activity>
12
EviatarS

これはURIスキームの誤用であり、無効です。渡すHTTP URLはデータの一部であるため、クエリ文字列で送信する必要があります。

myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F
1
Monstieur