12.02学习

activity-alias标签元素

此标签是在看马甲包应用的时候看到的。参考链接https://blog.csdn.net/ahence/article/details/51648768

功能

activity-alias为一个已经存在的Activity创建一个别名,作用是可以通过该别名标签声明快速打开目标Activity,因此activity-alias可以用来设置某个Activity快捷入口可以放在桌面上或者通过该别名被其他组件快速调起。

该标签元素支持一些属性及intent-filter、meta-data等配置,因此可以触发一些跟目标Activity不同的功能逻辑,虽然打开的是同一个Activity。举个简单的例子,如之前需要先打开主界面,然后才能点击进入某个Activity,如果使用activity-alias为该Activity配置一个快捷入口,甚至可以为其在桌面生成一个图标,然后点击桌面图标可直接进入该Activity,该功能可满足某些需要快速到达功能界面的需求。

以上,此标签可以替换图标,再结合setComponentEnabledSetting ,可以做到隐藏原本的应用的图标,替换成新的图标,从而达到隐藏真是app的作用,这样就成为了一个马甲包应用。

重要属性:

  1. android:icon 该属性允许自定义icon,可以不同于应用本身在桌面的icon。如果需要在桌面上创建快捷入口,也许产品会要求换个不同的icon。
  2. android:label 该属性类似于android:icon,图标都换了,换个名称也合情合理吧,此属性就是换一个桌面应用名称。
  3. android:name 该属性可以为任意字符串,但最好符合类名命名规范。activity元素的name属性实质上都会指向一个具体的Activity类,而activity-alias的name属性仅作为一个唯一标识而已

setComponentEnabledSetting方法

该方法是禁用和开启组件的方法,也是看马甲包应用的时候看到的,可以隐藏一个app的图标,显示另一个图标。参考链接https://blog.csdn.net/mingli198611/article/details/17269355

public void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)

componentName:组件名称

newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
可用状态:COMPONENT_ENABLED_STATE_ENABLED
默认状态:COMPONENT_ENABLED_STATE_DEFAULT

flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的ap

Context.getExternalFilesDir()和Context.getExternalCacheDir()

这两个方法是获取目录的方法,一般用在app内下载apk包时或者查找使用文件时会用到。

Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据