1

我有一个分为前端和后端的应用程序。(有点像 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();
    }
}   
}
4

0 回答 0