解决华为手机Android系统10.0不能隐藏桌面图标问题,全网唯一 | 您所在的位置:网站首页 › 华为nova7por怎么隐藏图标 › 解决华为手机Android系统10.0不能隐藏桌面图标问题,全网唯一 |
在Android系统10.0之后对应用隐藏图标做了严格的限制,Android官网的意思就是,除非是系统应用或者是不含Android四大组件并且没有申请任何权限的app才能隐藏图标。内心一阵独白:这特么的还不如直接说不让隐藏图标! 作为Android开发人的我们,能答应么,绝bi不能答应,找办法,全网的搜,大部分都是一个解决方法,就是将图标想方设法弄成全透明的,这个办法有风险不说,实质并未隐藏,在桌面还在占着一个图标位置。怎么办,想别的办法吧,偶然的机会在国外一个技术论坛上发现一个叫jork的哥们儿分享了一个小app,目的是打开部分华为手机的隐藏桌面(华为手机再某款之后基本关闭了隐藏桌面这个功能)。如沐春风,照着这个方向,继续奋斗,终于搞出一个小程序,可以打开已经被厂商关闭的隐藏煮面的功能,不说废话了,直接上代码! 核心内容在华为的EMUI系统中,有个存储各种开关功能的库,有对外提供的数据接口,库名字叫:content://settings/system,里面表3个字段很简单_id,name,value,id不用说,name是表示哪个功能,value是表示设置的值。我们打印一下都有那些数据, String id=cursor.getString(cursor.getColumnIndex("_id")); String name=cursor.getString(cursor.getColumnIndex("name")); String value=cursor.getString(cursor.getColumnIndex("value")); System.out.println("id="+id+"-----name="+name+"-----value="+value);有很多数据,对应打开隐藏桌面,只有一个数据有用,hw_launcher_hide_apps,将这个字段值设置为true,代码如下 ContentValues var5 = new ContentValues(2); var5.put("name", "hw_launcher_hide_apps"); var5.put("value", "true"); var0.getContentResolver().bulkInsert(Uri.parse("content://settings/system"), new ContentValues[]{var5});
这样,你的隐藏桌面图标的功能就又打开了,一般是两个手指从屏幕中间同时向外滑动,就会弹出这个界面 然后添加你要隐藏的应用就可以,再次回到桌面,桌面上已经没有我们的app的图标了,好了,这样就算曲线完工了。 特别提示 上面几段代码需要几个权限 这两个权限在Android api22以上是无法生效的,所以,我们这段代码需要将 targetSdkVersion 设置为22, 完整代码如下, 1、工具类 public class HUAWEISDK22 { public static boolean setPrefDbValue(Context var0, String var1, String var2, String var3) { try { ContentValues var5 = new ContentValues(2); var5.put("name", var2); var5.put("value", var3); var0.getContentResolver().bulkInsert(Uri.parse("content://settings/system"), new ContentValues[]{var5}); return true; } catch (Exception var4) { Log.e("setSystemDbValue", var4.getMessage()); return false; } } public static void getDbValue(Context var0) { try { Cursor cursor =var0.getContentResolver().query(Uri.parse("content://settings/system"), null,null,null,null); cursor.getCount(); while(cursor.moveToNext()) { String id=cursor.getString(cursor.getColumnIndex("_id")); String name=cursor.getString(cursor.getColumnIndex("name")); String value=cursor.getString(cursor.getColumnIndex("value")); System.out.println("id="+id+"-----name="+name+"-----value="+value); } cursor.close(); } catch (Exception var4) { Log.e("setSystemDbValue", var4.getMessage()); } }2、调用实例 HUAWEISDK22.setPrefDbValue(WifiActivity.this.getApplicationContext(), "system", "hw_launcher_hide_apps", "true");好了,今天就到了,欢迎各位大佬指正。 转载请注明原地址和作者,多谢! |
CopyRight 2018-2019 实验室设备网 版权所有 |