我尝试将谷歌地图应用到我的应用程序中,我已经在用户登录后实现了注册和登录活动,但我想显示一个地图并显示为空白屏幕。 我已生成API密钥并将其添加到我的google_maps_api.xml
中当我创建一个新项目并向其添加地图活动时,它的工作没有任何问题,我认为他们的问题在我的项目中的某个地方。
我已经在模拟器以及三星设备上测试过它。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.x.x.x">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key"/>
<activity
android:name=".Activitys.MainActivity"
android:screenOrientation="portrait">
</activity>
<activity
android:name=".Activitys.Register"
android:screenOrientation="portrait">
</activity>
<activity
android:name=".Activitys.Register2"
android:screenOrientation="portrait">
android:noHistory="true"
</activity>
<activity
android:name=".Activitys.Login"
android:screenOrientation="portrait">
</activity>
<activity android:name=".Activitys.Family_setup">
</activity>
<activity android:name=".Activitys.Join_family">
</activity>
<activity android:name=".Activitys.Create_family">
</activity>
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<activity
android:name=".Activitys.MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
出于测试目的,我已经确定地图活动首先开始。
当我运行该应用程序时,我会在左下角看到一个带有Google徽标的白色屏幕。
答案 0 :(得分:1)
感谢您的帮助。
我已将活动名称从android:name=".Activitys.MapsActivity"
更改为android:name="com.project.me.appname.Activitys.MapsActivity"
这已解决了我的问题。
答案 1 :(得分:0)
我也有同样的问题,只是想说谢谢你分享你的决心。我还想补充一点:
1)您可以在google以及开发者控制台中编辑包名称,因此您无需在应用中重命名包和依赖项。 您也可以提供根包名称,而不必将键限制为一个活动
2)通过USB在我的手机上进行调试效果很好,而模拟器仍然无法渲染地图
3)您的应用版本需要不同的API密钥,因为API密钥绑定到apk的SHA1,这与调试到发布模式不同。您的res文件夹中实际上有2个单独的文件/目录。
答案 2 :(得分:0)
在经历了2天的错误之后,我找到了一个很好的解决方案。
实际上,我通过在模拟器上安装发布签名的apk来调试应用,并检查显示的Logcat:
E/Google Maps Android API﹕ Authorization failure. Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
E/Google Maps Android API﹕ In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: YOUR_KEY_HEREAndroid Application (<cert_fingerprint>;<package_name>):
<SHA1 Removed for this> ;com.ankit.mapstest
这是因为您的应用程序的发行版具有不同的SHA-1指纹。 因此,请为发行版生成一个新的SHA-1指纹,并将其添加到具有相同软件包名称的凭据中的限制部分。添加过程需要5-10分钟。现在,您的应用程序运行完美。