从浏览器链接启动安卓应用程序

17

我试图使用自己的协议从浏览器中启动我的应用程序,但是遇到了问题。
代码如下:
清单文件:

   <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" 
        android:exported="false">
        <intent-filter>

            <data  android:scheme="allplayer" />

            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

HTML文件:

<html>
<head>
</head>
<body>
<a href="allplayer://site.com">Test link</a>
</body>
</html>
如果我点击这个链接,我的应用程序就无法启动。我做了很多研究,但找不到答案。
如果我将 allplayer 更改为 http ,一切都正常。
此链接中,我了解到不建议使用自己的scheme。那是不是意味着自己的scheme行不通?
这里的人正在使用自己的scheme,并且从他的反馈看来,它正在起作用。
我有什么没想到的吗?

1
你正在测试哪个设备?有报告称某些设备不允许自定义URL方案。 - louielouie
@louielouie,我正在测试medias N-04D和aquos phone ST-12C这两款安卓2.3.3版本的手机。 - Lazy Ninja
由于一些设备不允许自定义方案,我想这是不可行的。 - Lazy Ninja
@LazyNinja....您好先生...通过您上面的代码,我只能理解如何处理来自链接的数据...请问您能告诉我如何创建一个包含我的数据的链接吗?...请帮帮我...我想在按钮单击事件中创建带有数据的链接。 - Ravindra Kushwaha
1个回答

32

我花了6个小时才弄清楚问题。不知为何将android:exported="false"导致了所有问题。当我将它设置为true时,它就像魔法一样奏效了。

很有趣的是,我一开始把它放在那里是为了避免Exported activity does not require permission警告。将它设回true后,警告又出现了,但现在它可以工作了。

解决方案如下。希望它能帮助其他人节省时间。

<activity
      android:name=".MainActivity"
      android:label="@string/title_activity_main" 
      android:exported="true">
      <intent-filter>
          <data  android:scheme="allplayer" />
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.BROWSABLE" />
          <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
  </activity>

1
我所做的就是添加了android:exported="true"。这花费了我好几天的时间,你真是太棒了! - Andrei Cristian Prodan
2
我已经花了两个小时在这个问题上。感谢您提醒我导出值的默认设置为false。有趣的是,在Gingerbread上没有明确设置导出时,它仍然可以正常工作。 - Kevin Mark
懒惰的忍者:请问我该如何从浏览器链接中打开我的应用程序?请查看我的问题[http://stackoverflow.com/questions/29982407/issue-in-open-my-application-from-browser-url-in-android/29982527#29982527]。 - Harshal Kalavadiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接