我有一个分为前端和后端的应用程序。 (很像MVC)。 我的应用程序使用特殊的网址方案,如“testscheme”。 当用户点击testscheme://链接时我想通知后端,后端应设置内部状态并启动匹配活动。
Intercepting links from the browser to open my Android app
和
How to implement my very own URI scheme on Android涵盖了我的部分问题,但并不完全。
他们都指向我向<intent-filter>
添加<activity>
我想对该计划作出反应。但是在这一点上我不知道要启动什么Activity,即使我将以一种独特的方式格式化我的URL,我想在启动Activity之前保存内部状态。
我的第一次尝试是使用与<intent-filter>
完全相同的broadcastReciever,但这不起作用。
这是我的清单的相关部分:
<?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();
}
}
}