ほとんどのカスタム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を使用して/使用せずに試しました
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>
これはURIスキームの誤用であり、無効です。渡すHTTP URLはデータの一部であるため、クエリ文字列で送信する必要があります。
myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F