0

我已经开发了地图应用程序。在清单中,XML我添加<uses-library android:name="com.google.android.maps" /> 了它,它在移动设备和模拟器中运行良好。

但是在kindle fire设备中它不工作,当我<uses-library android:name="com.google.android.maps" />从清单中删除它在kindle fire中工作正常。

有没有办法通过<uses-library android:name="com.google.android.maps" />从清单文件中删除来使用谷歌地图。

如何使用此库参考而不用编写清单 XML。

4

3 回答 3

2

uses-library有一个未充分使用的required属性。

使用库文档

因此:

    <uses-library
        android:name="com.google.android.maps"
        android:required="false" />

如果您将此设置为 false,您的应用程序将在 Kindle Fire 上正常安装,但地图 API 调用仍然会失败,因为实际上地图库并不存在。为了解决这个问题,您需要保护您的代码在 API 不存在时不调用它。我自己使用这样的代码:

    protected boolean mapsAvailable() {
            try {
                    Class.forName("com.google.android.maps.MapView");

                    return true;
            } catch (ClassNotFoundException exception) {
                    return false;
            }
    }

如果 mapsAvailable 返回 false,请不要使用 MapView 进行任何活动,不要调用任何 Maps API 类等。

于 2012-05-21T19:39:30.693 回答
0

只需输入此代码

String geoAddress  = "geo:" + ll[0] + ","+ ll[1] + "?z=15";
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(geoAddress));
                context.startActivity(intent);

并在清单中添加权限

于 2012-04-12T11:28:58.047 回答
0

要使用 Maps API,您必须提供对其库的引用,否则NoClassDefFoundError将引发异常。读这个

于 2012-04-12T11:29:08.367 回答