java - 在 WEAR OS 上启动 gmap 所需的 READ_SETTINGS 权限
问题描述
我的 Android 应用必须在 Wear OS 上启动 gmap
Uri gmmIntentUri = Uri.parse("https://www.google.com/maps/search/?api=1&query=" +Uri.encode( string));
Intent mapIntent = new Intent(ACTION_VIEW, gmmIntentUri);
// mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(activity.getPackageManager()) != null) {
activity.startActivity(mapIntent);
}
但我收到一个错误,说 Permission denial... 它想要 com.google.android.wearable.READ_SETTINGS
如果我把这个
<uses-permission android:name="com.google.android.wearable.READ_SETTINGS" />
在清单中然后我得到同样的错误。
我无法以类似于此的方式以编程方式请求许可
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_SETTINGS)
== PackageManager.PERMISSION_GRANTED) {
Log.d("permissions","granted");
} else {
// Show rationale and request permission.
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.READ_SETTINGS},
MY_LOCATION_REQUEST_CODE);
}
因为找不到那个常数。编写完整的 com.google.android.wearable.READ_SETTINGS 字符串没有用处。
我不明白为什么需要 READ_SETTINGS。怎么解决?
解决方案
wearOS 上的 Google 地图无法处理Uri.parse("https://www.google.com/maps/search/?api=1&query=" +Uri.encode( string))
或采用文档中建议的这种格式Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California")
。虽然手机上的相同意图会启动谷歌地图并向您显示建议列表。
我的猜测是,wearOS 上的地图应用程序是轻量级的,您只能在特定城市或地区搜索某些内容,如下所示:
// Searches for 'Main Street' near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
以下链接显示了在 Android 上使用的 Google 地图意图示例:https ://developers.google.com/maps/documentation/urls/android-intents
对于错误:
com.google.android.wearable.READ_SETTINGS
您不需要在权限中添加此内容,但请检查您的 Wear 应用清单是否有此内容:
<uses-feature android:name="android.hardware.type.watch" />
推荐阅读
- hash - 将短字符串散列到 [0, N) 中的函数,用于小 N
- python - 如何在python中修改JSON
- javascript - 如何使用 D3 创建气泡树二进制图
- reactjs - Reactjs 使用带有嵌套路由的 Context Api 不共享状态
- amazon-web-services - AWS Aurora 集群的 Terraform 导入
- javascript - 是否可以即时切换画布 globalCompositeOperation?
- c++ - 如何在 OpenGL 2D 中设置垂直速度?
- javascript - JavaScript中具有任意长度格式规范的字符串到日期对象?
- laravel - 如何在我的本地计算机上从 Cpanel 运行 Laravel 下载的项目
- ios - 钱包通行证和推送通知