如何在不使用清单中的"com.google.android.maps"的情况下运行地图应用程序



我开发了地图应用程序。在清单XML中,我添加了<uses-library android:name="com.google.android.maps" />有了这个,它在移动设备和模拟器中工作正常。

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

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

如何使用此库引用而不在清单 XML 中写入。

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 类等。

只需输入此代码

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

并在清单中添加权限

为了使用地图API,您必须提供对其库的引用,否则将引发NoClassDefFoundError异常。阅读此内容。

最新更新