如何在不支持Google Map add-on 的真机上安装带有 MapActivity 的应用

 并不是所有的Android真机中都带有Google Map add-on。

若我们开发一个使用到了Google Map add-on的Android应用程序 (即使用了),

就会发现这个程序不能成功安装在没有内置Google Map add-on的真机中。

应用无法安装,这是个很让人蛋疼的问题。

至少要告诉用户为什么不能安装吧

下面提出一个解决方案:(还不是最好的,最好的应该是如果真机中没有 google map,那么我在程序中给它加上!)

方法有两个:

1)维护两条代码分支:

一条分支是针对于内置有Google Map add-on的Android真机,

另一条分支是没有内置有Google Map add-on的Android真机。

但是这样做会增加维护成本,而且粗心的用户可能会在自己的机器上安装了不匹配的分支,

从而降低了软件的友好度。

2)仍然只保留一条代码分支:

国外一位大牛指出:在标签中还包含了一个没有公布的属性"android:required",

你可以将com.google.android.maps库的这个属性设置为false,即:

<!-- The "android:required" attribute was added in API level 5 (Android 2.0) -->
<uses-library android:name="com.google.android.maps" android:required="false" />

这代表如果在目标机器上内置了Google Map add-on,

则可以正常使用应用;

如果目标机器没有内置Google Map add-on,也可以成功安装应用。

但是开发人员需要在代码中自行判断Google Map add-on是否可用,

举例如下:

try {

Class.forName("com.google.android.maps.MapActivity");

} catch (Exception e) {

Toast.makeText(MainActivity.this, "Oop! google地图不可用", Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setClass(MainActivity.this, MyMapActivity.class);

startActivity(intent);

参考网站:

[1] http://stackoverflow.com/questions/3909903/disable-mapview-if-it-is-not-supported

[2] http://androidforums.com/application-development/140147-does-all-android-devices-support-map-api.html

posted @ 2011-12-09 08:20  青香蕉  阅读(1037)  评论(0编辑  收藏  举报