Android对Chrome的意图:“找不到商品”

时间:2015-11-14 11:20:10

标签: android google-chrome android-intent

我正在尝试从Chrome打开我的应用,但它对我不起作用..

这是官方(非常有限)的文件: Android Intents with Chrome

我发现了一堆类似的问题,但没有一个解决方案似乎对我有用 - 而且,答案有点零散,所以我正在寻找完整的答案。我们很高兴在我们找到它后立即发布我的完整解决方案:)

这是我现在得到的:

的AndroidManifest.xml:

<activity android:name=".ActMain" >
    <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" />
        <data android:scheme="https" />
        <data android:scheme="sharedr" />
        <data android:host="pocketr.rejh.nl" />
        <data android:pathPattern="/.*" />
    </intent-filter>
</activity>

Javascript(它在用户点击元素时构建意图链接):

var url = "http://icerrr.rejh.nl/"
var title = "Example"
var intenturl = "intent://sharedr/#Intent;"
    + "package=com.rejh.sharedr;"
    + "S.action=share;"
    + "S.type=url;"
    + "S.title="+ app.helpers.encodeURIComponent(title) +";"
    + "S.url="+ app.helpers.encodeURIComponent(url) +";"
    + "end";
alert(intenturl); // for debugging
try {
    window.location.href=intenturl;
} catch(e) { alert(JSON.stringify(e)); }

我从这个函数得到以下'链接':

intent://sharedr/#Intent;package=com.rejh.sharedr;S.action=share;S.type=url;S.title=Example;S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;end

人类可读:

intent://sharedr/#Intent;
    package=com.rejh.sharedr;
    S.action=share;
    S.type=url;
    S.title=Example;
    S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;
end

这样就可以了:它打开Play商店并显示“找不到项目”和“刷新”按钮。所以它打开了一个活动但不是正确的活动..

我试图解决此问题的网站是http://pocketr.rejh.nl

帮助?

完整答案

正如马蒂亚在下面所指出的那样(我只是自己想出来,但找到答案等着我......:P)

首先:我忘了在我的意图链接中包含'scheme = sharedr':

intent://sharedr/#Intent;
    package=com.rejh.sharedr;
    S.action=share;
    S.type=url;
    S.title=Example;
    S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;
end

应该(注意第二行):

intent://sharedr/#Intent;
    scheme=sharedr;
    package=com.rejh.sharedr;
    S.action=share;
    S.type=url;
    S.title=Example;
    S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;
end

然后,在android清单中:

<activity android:name=".ActMain" >
    <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="sharedr" android:host="sharedr" android:path="/"/>
    </intent-filter>
</activity>

其中'android:scheme =“sharedr”'是'scheme = sharedr'部分,'android:host =“sharedr”'对应'intent:// sharedr /'

谢谢!

1 个答案:

答案 0 :(得分:3)

您将sharedr指定为host,但host中配置的AndroidManifest.xmlpocketr.rejh.nl。您也没有指定scheme

修复的网址是:

intent://pocketr.rejh.nl/#Intent;scheme=sharedr;package=com.rejh.sharedr;S.action=share;S.type=url;S.title=Example;S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;end

人类可读:

intent://pocketr.rejh.nl/#Intent;
    scheme=sharedr;
    package=com.rejh.sharedr;
    S.action=share;
    S.type=url;
    S.title=Example;
    S.url=http%3A%2F%2Ficerrr.rejh.nl%2F;
end