从网页打开Android应用程序

时间:2012-08-02 08:45:56

标签: javascript android html android-intent action

我知道要从网页内的链接打开android应用程序,我们必须在AndroidManifest.xml中编写以下内容:

        <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_scheme" android:host="my_host" />
        </intent-filter>

问题在于我是用以下方式编写的:

        <intent-filter>
            <action android:name="my_action"/>
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="my_scheme" android:host="my_host" />
        </intent-filter>

我没有添加“android.intent.action.VIEW”,而是我添加了自己的动作。 我无法更改它,因为该版本已经发布。

问题是,如果有办法让应用程序从JavaScript或简单的html页面运行,可能是通过在页面中定义特定的操作?

谢谢,

帕兹。


解决:

感谢David,我找到了一个解决方案:

<a href="intent://my_host#Intent;scheme=my_scheme;action=my_action;end">Link to my stuff</a> 

4 个答案:

答案 0 :(得分:20)

试试这个:

让你的链接看起来像这样:

<a href="intent:#Intent;action=my_action;end">Link to my stuff</a>

另请查看Launch custom android application from android browser

答案 1 :(得分:2)

AndroidMainfest声明:

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

你可以让我们调用

<a href = "schemeName://hostName/path">

或在浏览器中添加类似url的param

<a href = "schemeName://hostName/path?id=1&name=mark">

答案 2 :(得分:1)

林平君说的一种方式,另一种方式是通过调用js方法,代码如下:

function openAActivity(){
     window.location = "schemeName://hostName/path"

}

此方法将发送Android意图以启动指定的活动。

答案 3 :(得分:-2)

第一路:

<html><head></head><body>
<iframe src="YourApp://profile/blabla" width="1px" height="1px" scrolling="no" frameborder="0"></iframe>
<script>
setTimeout(function() {
window.location = "http://YourSite.com/profile/blabla"; }, 4000
                );
</script>
</body>
</html>

或者第二路https://stackoverflow.com/a/24023048/2165415