错误通过URL打开Android应用程序

时间:2015-06-04 11:08:52

标签: android

我想从我可以在Twitter,Facebook等上发布的URL打开我的应用程序。为此,我已经定义了一个活动,当我点击名为“SetPointsActivity”的链接时,我想要调用它。链接类似于http:// goo.gl/oMdIVz

我在AndroidManifest.xml中定义了活动,如:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.comapk/res/android"
package="demo31.mobiltool" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".OriginActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".SetPointsActivity"
        android:label="@string/title_activity_set_points"
        android:exported="true">
        <intent-filter>
            <data
                android:scheme="http"
                android:host="goo.gl" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>
</application>

我在Twitter帐户的消息中收到了链接:

enter image description here

但是,我不知道我做错了什么,因为当我在链接上制作clic时,我得到的是在浏览器的新选项卡上打开链接而不是打开我的应用程序。

我做错了什么?

如果在我的AndroidManifest.xml中我改变了

<data
                android:scheme="http"
                android:host="goo.gl"/>

通过

<data
                android:scheme="http"
                android:host="abc.gl"/>

<data
                android:scheme="http"
                android:host="demo31.com"/>

它不起作用。我不明白发生了什么!

我已在AndroidManifest.xml上进行了修改

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="demo31.mobiltool" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".OriginActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SetPointsOnMapActivity"
        android:label="@string/title_activity_set_points"
        android:exported="true">
        <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="goo.gl" />
        </intent-filter>
    </activity>
</application>

当我收到推文消息并点击收到的链接时,我被重定向到http://goo.gl并且没有显示活动我要拨打的电话

enter image description here

如果我转到下一个网址http://goo.gl而未关闭浏览器,我会再次重定向到Google Url Shortener。但是,如果我关闭浏览器和所有选项卡并再次打开再次在浏览器上写入网址http://goo.gl,它就可以了! Android向我展示了参加我想要的活动的可能性!

enter image description here

发生什么事了?为什么我不能通过链接点击我的活动?如果我先从链接访问,为什么我必须先关闭浏览器,然后才能访问我的活动?

我使用其他浏览器进行了更多测试。以前,我已经使用Chrome浏览器和模拟器的浏览器进行了测试。有了这些浏览器,我遇到了太多问题。但新测试使用Firefox与我的AndroidManifest.xml配置完全一样正常工作!

例如,使用此AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="demo31.mobiltool" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".OriginActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SetPointsOnMapActivity"
        android:label="@string/title_activity_set_points"
        android:exported="true">
        <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="my.special.scheme" />
        </intent-filter>
    </activity>
</application>

如果我在Firefox上写下一个url my.special.scheme://无论什么......浏览器直接打开我的应用程序。为什么我不能使用Chrome或仿真器浏览器呢?

0 个答案:

没有答案