如何在Android真机上检测是否有Google Map add-on
并不是所有的Android真机中都带有Google Map add-on,要想内置Google Map add-on是需要和google商谈的。
但是若我们开发一个使用到了Google Map add-on的Android应用程序(即使用了<uses-library android:name="com.google.android.maps" />),就会发现这个程序不能成功安装在没有内置Google Map add-on的真机中,那么我们有什么办法来解决这个问题呢?
方法有两个:
1)维护两条代码分支:
一条分支是针对于内置有Google Map add-on的Android真机,另一条分支是没有内置有Google Map add-on的Android真机。
但是这样做会增加维护成本,而且粗心的用户可能会在自己的机器上安装了不匹配的分支,从而降低了软件的友好度。
2)仍然只保留一条代码分支:
国外一位大牛指出:在<uses-library>标签中还包含了一个没有公布的属性"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
分享到:
相关推荐
android 全景 涉及权限 uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> ... android:required="false" />
CameraFilters ... android:required="true"/> Step 1 mFilterManager = FilterManager .builder() .context(mApplicationContext) .isUseQiniu(false)//是否在qiniu云直播上使用滤镜
<uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> ``` 接下来,我们需要在布局文件中...
<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.front" android:required="false" /> <uses-permission android:name...
<uses-feature android:name="android.hardware.camera" android:required="true" /> ``` 此外,如果使用EasyPermissions库来处理权限,还需要在`<application>`标签内声明权限请求的回调类: ```xml ... ...
<uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> ``` 然后,创建一个布局...
<uses-feature android:name="android.hardware.location.network" android:required="false" /> ... android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/> ... ``` 接着,在...
<uses-feature android:name="zidane.software.ability" android:required="false" /> 3. 向application节点下新增子节点。 <meta-data android:name="permZA" android:value="true" /> <meta-data android:...
<uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android....
<uses-feature android:name="android.hardware.touchscreen" android:required="false" /> ``` 接着,创建一个百度地图的Activity。在布局文件中添加MapView控件,并设置其属性: ```xml android:id="@+id/...
<uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_...
<uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.CAMERA" /> ``` 这里的`uses-feature`标签表明应用需要使用摄像头功能,`...
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.front" android:required="false" /> <uses-feature android:...
<uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_...
<uses-feature android:name="android.hardware.location.network" android:required="false" /> android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY_HERE" /> ``` 现在,我们需要在...
<uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/> ``` 以及: ```xml android:name="com.viromedia.bridge.activity.ViroActivity" android:configChanges...
<uses-feature android:name="android.hardware.camera.flash" android:required="false" /> ``` UI设计方面,一个简单而直观的开关按钮通常用于控制手电筒的开启和关闭。按钮的状态需要实时反映闪光灯的当前状态,...
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" /> <uses-feature android:name="android.hardware.audio.lowlatency" android:required="false" /> ...
<uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android....
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/> <uses-feature android:name="android.hardware.wifi" android:required="false"/> ``` 在Activity中,你需要...