【问题标题】:Google Maps Android API v2 works only on one phoneGoogle Maps Android API v2 仅适用于一部手机
【发布时间】:2015-03-10 16:20:49
【问题描述】:

我正在与我的团队合作,使用他们的 Android API v2 显示 Google 地图。

我设法获取代码并在我自己的手机上进行了测试,它运行良好...但是当代码在我的队友的手机上运行时,他们的屏幕是灰色的,他们有这个:

E/Google Maps Android API(30514): Authorization failure.

奇怪的是,这个错误不会 100% 出现在他们的 logcat 中,有时他们只是得到灰屏而没有任何错误。顺便说一句,我们的代码与 SVN 同步,因此它们肯定会更新。

我的API 密钥是从调试密钥获得的,并且已经验证正确,因为它可以在我的手机上完美运行。

我不确定究竟是什么原因造成的,因此我不确定我可以在此处发布哪些代码来寻求帮助。与此同时,我将发布我的 MapFragment 类代码,希望它能为某人提供帮助。

如果还有什么我可以在这里发布以寻求答案,请告诉我,我会尽快发布。谢谢!

public class POnlineMapViewFragment extends SherlockMapFragment {

    private GoogleMap mMap;
    private double latitude;
    private double longitude;
    private String placeName;
    static Bundle bundle;
    private LatLng point;
    View v;

    @Override
    public void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);
        bundle = getArguments();
        if(bundle != null) {
        this.latitude = getArguments().getDouble("latitude");
        this.longitude = getArguments().getDouble("longitude");
        this.placeName = getArguments().getString("placeName");
        this.point = new LatLng(latitude,longitude);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
        View v = super.onCreateView(inflator, container, savedInstanceState);
        mMap = getMap();

        CameraUpdate center= CameraUpdateFactory.newLatLng(point);
        CameraUpdate zoom=CameraUpdateFactory.zoomTo(17);
        mMap.addMarker(new MarkerOptions().position(point).title(placeName).icon(BitmapDescriptorFactory.fromResource(R.drawable.gps_small)));


        mMap.moveCamera(center);
        mMap.animateCamera(zoom);

        return v;     

    }

    public static POnlineMapViewFragment newInstance(Bundle b) {
        POnlineMapViewFragment mapfrag = new POnlineMapViewFragment();
        mapfrag.setArguments(b);
        return mapfrag;
    } 
}

【问题讨论】:

  • 你说的“Google Maps Android API v2 只能在一部手机上运行”是对的,官方开发文档里写的。
  • @BBonDoo 抱歉,这是什么意思?
  • 按照我的想法。Google Maps Android API(30514):授权失败意味着您没有使用 API 密钥访问 Google API。您必须使用 google api 密钥并且必须拥有 gmail 帐户。
  • @NarendraPal 我很确定 API 密钥是正确的,因为谷歌地图在调试期间可以正常工作并在我的手机上完美显示。但是,在调试期间它不会显示在我朋友的手机上。即使授权失败也不是 100% 发生的,有时它只是一个没有任何错误的灰屏
  • @lyk...请see this document.

标签: android android-maps-v2 supportmapfragment


【解决方案1】:

要使用地图,您需要谷歌的地图 api 密钥,通过提供您用于生成 apk 的密钥库证书的指纹(在开发环境的情况下为 debuge.keystore)。 一旦您获得特定证书的地图 api 密钥,您必须使用相同的证书 debuge.keystore) 来生成 apk 文件以在所有设备上成功运行应用程序,否则它将显示带有灰色正方形的空白地图..

  • 如果您和您的朋友从不同的机器/PC 生成 apk,则必须使用相同的调试证书来生成 apk 文件

【讨论】:

  • 哦,你是说不同的机器会有不同的调试密钥库?是这个原因吗?
  • 没关系.. 在 user/.android 目录中找到你的 debug.keystore 文件,并用这个替换你朋友的 debug.keystore 文件,然后从 eclipse 重新运行应用程序。
  • 好的,我会试试的!谢谢!
  • 我认为在不同电脑的模拟器上使用相同的安装程序就是这种情况。设备不应该是这种情况
  • 我还有什么其他文件要传递给我的朋友吗?我已经要求他们替换 debug.keystore 文件,但它仍然无法正常工作,仍然出现授权失败,这很奇怪
【解决方案2】:

我遇到了同样的问题,解决方法是用我的 PC 上的本地 debug.keystore 文件替换我朋友的 debug.keystore 文件,因为密钥是使用我的 debug.keystore 文件生成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多