我在哪里可以在AndroidManifest.xml中添加我的intent-filter?

时间:2013-08-21 08:58:46

标签: android android-intent

以下是我要设置的内容:我的Android应用需要确认电子邮件。他们使用我的应用程序注册,然后通过链接向他们发送电子邮件。我想让该链接直接打开应用程序,但我被告知最好在我的网站上打开链接打开页面,然后使用重定向打开应用程序。该链接还会发送用户的电子邮件地址和验证码。

好的,那么,这样做,我的理解是我需要将此代码添加到我的AndroidManifest.xml(其中MYAPP是我的网站的名称):

        <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="http" android:host="MYAPP.com" android:path="/confirmation.html" />
        </intent-filter>

然后我的网站在<head>(其中MYAPP是我的应用名称)中有一个页面:

meta http-equiv="refresh" content="0;URL=MYAPP://?verification=' . $_GET["verification"] . '&email=' . $_GET["email"] . '"/>

它不起作用,我可能犯了多个错误。

第一个问题是,<intent-filter>去哪儿了?我只是看到它在<activity>标签内,但在我的AndroidManifest.xml中,我有两个<activity>标签:

    <activity android:label="@string/app_name" android:name=".MYAPP" android:screenOrientation="unspecified" android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:label="@string/app_name" android:name="com.phonegap.DroidGap">
        <intent-filter />
    </activity>

我尝试将<intent-filter>添加到一个中,但这似乎不起作用:

    <activity android:label="@string/app_name" android:name=".MYAPP" android:screenOrientation="unspecified" android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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="http" android:host="MYAPP.com" android:path="/confirmation.html" />
        </intent-filter>
    </activity>
    <activity android:label="@string/app_name" android:name="com.phonegap.DroidGap">
        <intent-filter />
    </activity>

我在哪里放置<intent-filter>

我的其余代码,尤其是我的重定向网址,还好吗?

请注意我是初学者,我正在使用Phonegap来构建这个应用程序,所以请不要认为我对Android应用程序开发有很多了解。谢谢你的理解。

2 个答案:

答案 0 :(得分:1)

在您的活动标签内:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".My_Activity_Name"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application

在您的此代码中,上一个活动的起始intent-filter标记在哪里:

<activity android:label="@string/app_name" android:name=".MYAPP" android:screenOrientation="unspecified" android:configChanges="locale|keyboard|keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <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="http" android:host="MYAPP.com" android:path="/confirmation.html" />
    </intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="com.phonegap.DroidGap">
    <intent-filter />
</activity>

答案 1 :(得分:0)

事实证明我的意图过滤器位于正确的位置。

它无法正常工作的原因仅仅是因为我需要额外的一行来说明https个链接。

所以我的代码现在看起来像这样:

    <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="http" android:host="MYAPP.com" android:path="/confirmation.html" />
        <data android:scheme="https" android:host="MYAPP.com" android:path="/confirmation.html" />
    </intent-filter>