Android10.0应用图标隐藏方案(7.0

您所在的位置:网站首页 华为手机怎样隐藏应用图标显示 Android10.0应用图标隐藏方案(7.0

Android10.0应用图标隐藏方案(7.0

2024-07-11 14:31| 来源: 网络整理| 查看: 265

Android7.0 - 9.0应用图标隐藏

Android1.0到9.0隐藏应用图标的方法很简单,只需要AndroidManifest.xml文件中的MainActivity中添加代码:

示例如下:

即可完成对应用图标的隐藏。不过这里需要注意一下, android:scheme是大小写敏感的,必须以小写字母开头。 scheme设置后表示这个MainActivity可以响应Uri为com.learn.alias.target的特定Intent。

另外为什么加入这个之后app就不显示图标了呢? 因为这里把app的入口Activity声明为由接收隐式的Intent来启动,也就不会显示图标了。

外部隐式启动方式:

String scheme = "com.learn.alias.target"; Intent intent = new Intent(); intent.setComponent(new ComponentName(pkgName, clsName)); // 这里传设置好的scheme值 intent.setData(Uri.parse(scheme)); startActivity(intent);

这种方式既能隐藏图标,又可以被外部应用隐式启动,在Android系统10.0以下,这个方式是可以用的。但是Android系统10.0却不能用,下面就来做一下Android10.0的图标隐藏方式。

Android10.0应用图标隐藏

问题:上面的方法在Android10.0上为什么失效?

Android 10 限制了应用隐藏其启动器图标的能力。如果某个应用没有已启用的启动器 Activity,则系统会在启动器中显示一个合成的 Activity;此合成的 Activity 代表该应用在系统设置中的详情页面。 除非满足以下任一条件,否则应用必须具有图标:

它是系统应用,即使是更新后的应用。它是托管式配置文件管理应用(工作资料所有者)。它未请求任何权限。它不包含任何组件(例如,Activity、内容提供程序、广播接收器和服务)。具有图标且拥有已启用的可启动 Activity 的应用不受影响。除了上面列出的例外情况,所有应用均会显示一个图标。如果应用没有图标,则会显示默认的系统图标。点按没有可启动 Activity 的应用图标时会打开应用信息屏幕。

如需详细了解用于显示应用图标的逻辑,包括不显示哪些类型的应用的应用图标 Android官网说明: https://source.android.google.cn/setup/start/android-10-release?hl=zh-cn https://developer.android.google.cn/reference/kotlin/android/content/pm/LauncherApps?hl=zh-cn#getactivitylist

解决方法:利用activity-alias来实现 从文章 https://blog.csdn.net/qq_30710615/article/details/106298458 和 https://stackoverflow.com/questions/8398514/hide-application-icon 中可以得知利用activity-alias可以实现Android10.0上应用图标隐藏功能,但唯一有个缺陷就是会保留透明的占位alias的图标。 具体实现步骤如下:

实现步骤

1. 创建AliasActivity.java

AliasActivity是一个1像素的透明Activity。

public class AliasActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window window = getWindow(); // 设置窗口位置在左上角 window.setGravity(Gravity.LEFT | Gravity.TOP); WindowManager.LayoutParams params = window.getAttributes(); params.x = 0; params.y = 0; params.width = 1; params.height = 1; window.setAttributes(params); finish(); } } 2. 创建AliasMainActivity

AliasMainActivity中在10.0以下,要禁用Alias1Activity,这样就不会显示透明图标(部分机型可能有缺陷)。

public class AliasMainActivity extends AppCompatActivity { private Button toActivity, hideActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 先禁用AliasMainActivity组件,启用alias组件 AppIconUtil.set(AliasMainActivity.this, "com.learn.alias.target.AliasMainActivity", "com.learn.alias.target.Alias1Activity"); // 10.0以下禁用alias后,透明图标就不存在了,10.0的必须开启,不然会显示主应用图标,10.0会有一个透明的占位图 if (Build.VERSION.SDK_INT


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3