Android アプリにカスタム URL スキームを実装しようとしています。完全なアクティビティ フローは次のとおりです。
ステップ 1: ユーザーがデバイスにアプリをダウンロードする
ステップ 2: ユーザーがデバイスにアプリをインストールする
ステップ 3: ユーザーがサインアップ ページからアプリにサインアップします。
ステップ 4: サインアップ/登録が完了すると、Web サーバーからユーザーにアカウントを有効にするための電子メールが送信されます。
ステップ 5: ユーザーは、Web ブラウザーからアクティベーション メールを開くか、Android フォンからメール アプリを開く必要があります。
ステップ 6: ユーザーが電子メールのアクティベーション リンクをクリックすると、システムは次のステップを実行する必要があります。
6.ユーザーは URL を介してアクティブ化されます
6.b システムは、要求がコンピューターまたはモバイル デバイスからのものかどうかを確認します (ブラウザーの Java スクリプト コードがこのチェックを実行します)。
6.c ユーザーがモバイル デバイスを使用していて、デバイスの OS が Android の場合、アクティベーション プロセスでは、アクティベーション後にインストール済みのアプリを開く必要があります。
問題
上記のソリューションは、Android OS バージョン 2.x では機能しますが、OS バージョン 4.x では機能しません。この問題は、ユーザーが Android 4.0 デバイスの電子メール アプリでアクティベーション リンクをクリックすると発生します。アクティブ化すると、ユーザーはページにリダイレクトされ、モバイル ブラウザは「Web ページが見つかりません」というエラー メッセージを返します。</p>
実装:
ログイン画面のアクティビティ定義のために、アプリのマニフェストでカスタム URL スキームを定義しました。url appnameURLScheme://appname がブラウザーから呼び出されると、アプリのログイン画面が起動し、ブラウザーをバックグラウンドにしてアプリを前面に表示します。
マニフェストは次のとおりです。
<activity
android:name=".AppNameScreen"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".LoginScreen"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<data
android:host="AppName"
android:scheme="AppNameURLScheme" />
<action android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT"/>
<category
android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>