我有一个分为前端和后端的应用程序。(有点像 MVC)。我的应用程序使用特殊的 url 方案,如“testscheme”。当用户单击 testcheme:// 链接时,我想通知后端,后端应该设置内部状态并启动匹配的活动。
从浏览器拦截链接以打开我的 Android 应用程序
以及
如何在 Android 上实现我自己的 URI 方案涵盖了我的部分问题,但并不完全。他们都指出我要添加一个我<intent-filter>
想<activity>
对该计划做出反应的内容。但是此时我不知道要启动什么活动,即使我会以一种独一无二的方式格式化我的网址,我也想在启动活动之前保存内部状态。
我的第一次尝试是使用相同的广播接收器,<intent-filter>
但这不起作用。
这是我的清单的相关部分:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testurls"
android:versionCode="2"
android:versionName="0.1" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<receiver android:name=".backend.BackendController" >
<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="testurls" />
</intent-filter>
</receiver>
</application>
</manifest>
这是我的接收器的一部分
package com.example.testurls.backend;
public class BackendController extends BroadcastReceiver implements BackendControllerInterface, GameStateLoadedListener, UrlsLoadedListener {
@Override
public void onReceive(Context context, Intent intent) {
Uri data = intent.getData();
if(data.getHost()=="maillink"){
this.proceedlevel();
this.frontend.MailReturned();
}else if(data.getHost()=="level1finished"){
this.proceedlevel();
this.frontend.level1Finished();
}
}
}