我正在尝试在我的Android应用上实施自定义网址方案。这是完整的活动流程:
第1步:用户在设备上下载应用
第2步:用户在设备上安装应用
第3步:用户从注册页面注册应用程序。
步骤4:注册/注册完成后,Web服务器会向用户发送电子邮件以激活帐户
步骤5:用户需要从网络浏览器或电子邮件应用程序中打开激活电子邮件 Android手机
步骤6:当用户点击电子邮件中的激活链接时,系统应执行以下步骤:
6.a用户通过URL激活
6.b系统验证请求是来自计算机还是移动设备(浏览器中的Java脚本代码正在执行此检查)
6.c如果用户使用的是移动设备且设备操作系统是Android,则激活过程应在激活后打开已安装的应用
问题
以上解决方案适用于Android操作系统版本2.x但不适用于操作系统版本4.x如果用户单击Android 4.0设备的电子邮件应用程序中的激活链接,则会出现此问题。激活后,用户将被重定向到页面,移动浏览器将返回错误消息“无法找到网页”
实现:
我在应用程序清单中为登录屏幕活动定义定义了自定义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>