基于mAppWidget实现手绘地图–去掉试用版地图水印

mAppWidget是一个Android类库,使用它可以很方便的实现手绘地图,同时支持放大,缩小,气泡,图层等功能。但是这个类库分为试用版和正式版,正式版本的类库需要100多美刀,而试用版本虽然可以免费使用,但是地图上会有一个讨厌的logo 。

基于mAppWidget实现手绘地图–去掉试用版地图水印_第1张图片

  记得有个哥们项目需要,研究了一下。当时只是弄了个小demo,没有深入研究。有网友留言,才发现这个类库还是有很不少人在用的。大家都反映这个logo太影响美观了,如何才能干掉它。

  有网友说可以使用反射暴力去掉水印,感觉是个靠谱的主意。只要找到控制水印显示的属性,改变它的属性为不可见即可。

  使用jd-gui 看了一下mAppWidget的jar包,浏览了一下代码。在MapWidget中发现了一个静态Bitmap的属性,该属性声明为K,感觉很可疑。查找了一下K属性的赋值,发现如下代码:

    if (com.ls.widgets.map.utils.Resources.LOGO != null) { 
      K = BitmapFactory.decodeByteArray(com.ls.widgets.map.utils.Resources.LOGO, 0, com.ls.widgets.map.utils.Resources.LOGO.length); 
    }
       哈哈,明眼人一看就知道LOGO是什么啦。判断条件是这个LOGO是否为空,只要将这个LOGO属性设置为空,那么水印就没有了。

  下面我们使用反射来人为修改,代码如下:

Class<?> c = null;
try {
//反射找到Resources类
            c = Class.forName( "com.ls.widgets.map.utils.Resources");
            Object obj = c.newInstance();
//找到Logo 属性,是一个数组
            Field field = c.getDeclaredField( "LOGO");
            field.setAccessible( true);
//将LOGO字段设置为null
            field.set(obj, null);
        } catch (Exception e) {
            e.printStackTrace();
        }


  将此段代码放到地图初始化之前,即可。效果如下:

 

基于mAppWidget实现手绘地图–去掉试用版地图水印_第2张图片




=================================

 欢迎加入 mAppWidget交流群:200742788  

开源地址:https://github.com/lemberg/mappwidget

=================================


你可能感兴趣的:(水印,mAppwidget)