【问题标题】:Cordova - Opening Google maps from app using geo URI - Permission IssueCordova - 使用地理 URI 从应用程序打开 Google 地图 - 权限问题
【发布时间】:2015-03-10 04:02:46
【问题描述】:

我有一个使用 Ionic 框架和 Cordova 构建的应用程序,它使用地理 URI 打开谷歌地图。

但是谷歌地图没有打开。在日志中我收到以下错误,

/ActivityManager( 2348): Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
E/DatabaseUtils( 2348): Writing exception to parcel
E/DatabaseUtils( 2348): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
E/DatabaseUtils( 2348):     at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
E/DatabaseUtils( 2348):     at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
E/DatabaseUtils( 2348):     at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
E/DatabaseUtils( 2348):     at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
E/DatabaseUtils( 2348):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
E/DatabaseUtils( 2348):     at android.os.Binder.execTransact(Binder.java:388)
E/DatabaseUtils( 2348):     at dalvik.system.NativeStart.run(Native Method)

我尝试添加以下权限,但没有成功

<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

示例 URI

'geo:0,0?q=' + 'some address like 2/100 ABC street'

Cordova 版本 - 4.1.2 Android 目标 SDK - 19

注意:它适用于 Cordova 3.5

有没有人遇到过类似的问题?

任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 你的应用是signed吗?
  • 是的,它已签名。 Ionic 在这里有一个发布程序ionicframework.com/docs/guide/publishing.html
  • 你能发一个网址例子吗?
  • @jcesarmobile 添加了 URI 示例
  • 对不起,我的意思是代码是你加载或重定向到 url

标签: android google-maps cordova ionic-framework


【解决方案1】:

我还没有真正遇到过这个问题,但修复似乎非常简单,因为您只需在 AndroidManifest.xml

上添加此权限
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

【讨论】:

  • 那么你应该在你的问题中提到它,我很确定它直接在错误消息中说你缺少该权限。
【解决方案2】:

cordova 3.6.0+ 引入了外部应用程序白名单。您必须将 &lt;access origin="geo:*" launch-external="yes" /&gt; 添加到您的 config.xml 中。

来源:http://cordova.apache.org/docs/en/4.0.0/guide_appdev_whitelist_index.md.html

【讨论】:

    【解决方案3】:

    据我所知,打开外部应用程序 URI 需要一些本机代码,您不能只使用 &lt;a href&gt; 链接来完成。我们通过实现一个单独的 API 解决了 Supersonic 中的问题:http://docs.appgyver.com/supersonic/api-reference/stable/supersonic/app/openurl/

    如果您想查看此内容,可以将我们的 Steroids toolingrun your Cordova app 与我们的包装器一起使用,但您需要手动包含 steroids.jssupersonic.js 库才能访问 API。

    (免责声明:我是 AppGyver 的程序员)。

    【讨论】:

    • 在大多数情况下,您可以使用带有 _system 选项的 inAppBrowser 插件,或者将 config.xml 中的 url 列入白名单也适用于某些 url 方案
    • @harsa_ 使用地理 URI,您可以调用 Google 地图应用程序。如果它安装在手机上,地理 URI 将重定向到谷歌地图应用程序,否则它将在浏览器中打开地图。当我拥有 Cordova 3.5 版时,它起作用了。我认为我不需要编写自己的 API 来实现这一点。在此处查看 URI 方案 developers.google.com/maps/documentation/ios/urlscheme
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多