Android tips(五)-->android系统设置中的应用详情

来源:互联网 发布:安卓秒变iphone软件 编辑:程序博客网 时间:2024/06/10 20:22

转载请标明出处:一片枫叶的专栏

开发过Android的童鞋相比都知道 设置-》应用管理-》应用详情页面,这是android系统自身的应用“设置”的管理系统安装应用显示应用详情的页面,不同的手机该页面显示的内容不太一样,但也都是大同小异,这里简单介绍一下各个标签的不同含义。

这里暂定以小米3手机的应用详情页面为参考:
这里写图片描述
这里写图片描述

  • 第一部分标题
    主要显示App的Icon,名称版本号等信息;

顺带说一下android系统中获取应用名称和Icon的方式

/**     * 获取应用名称     * @param mContext     * @return     */    public static String getApplicationName(final Activity mContext) {        PackageManager packageManager = null;        ApplicationInfo applicationInfo = null;        try {            packageManager = mContext.getApplicationContext().getPackageManager();            applicationInfo = packageManager.getApplicationInfo(mContext.getPackageName(), 0);        } catch (PackageManager.NameNotFoundException e) {            applicationInfo = null;        }        String applicationName = (String) packageManager.getApplicationLabel(applicationInfo);        return applicationName;    }
/**     * 获取应用的Icon     * @param mContext     * @return     */    public static PackageInfo[] getAppInfoByPackage(Activity mContext) {        PackageInfo[] mPackageInfo = new PackageInfo[2];        List<PackageInfo> packages = mContext.getPackageManager().getInstalledPackages(0);        L.i("packages Size:" + packages.size());        for (int i = 0; i < packages.size(); i ++) {            // L.i("执行:" + i);            if (packages.get(i).packageName.equals(BAIDU_PACKAGE)) {                L.i("执行:" + i + "  获取百度地图应用信息...");                mPackageInfo[0] = packages.get(i);                Drawable icon1 = mPackageInfo[0].applicationInfo.loadIcon(mContext.getPackageManager());            } else if (packages.get(i).packageName.equals(GAODE_PACKAGE)) {                L.i("执行:" + i + "  获取高德地图应用信息...");                mPackageInfo[1] = packages.get(i);                Drawable icon2 = mPackageInfo[1].applicationInfo.loadIcon(mContext.getPackageManager());            }            if (mPackageInfo[0] != null && mPackageInfo[1] != null) {                return mPackageInfo;            }        }        return mPackageInfo;    }
  • 主要是通知栏和悬浮框的设置
    小米3中有两个通知类的设置,分别是自定义通知和显示悬浮框;

  • 存储
    1)总计 = 手机存储代码大小 + 手机存储数据大小 + SD卡存储代码大小 + SD卡存储数据大小
    2)引用 = 手机储存代码大小 + SD卡存储代码大小
    3)USB存储(应用) = SD卡存储的代码大小
    4)数据 = 手机存储数据大小 + SD卡存储数据大小
    5)USB存储(数据)= SD卡存储的数据大小
    6)清除数据 = 清除SD卡存储中的数据 + 清除手机存储中的数据

对应目录参考:
1 、 codeSize : //apk 的大小,对应 apk 所在的目录。
2 、 dataSize; // 内部数据。 /data/data/
3 、 cacheSize; // 内部缓冲数据。 /data/data//cache
4 、 externalCodeSize; // 外部代码大小。对应 apk 所在的外部的目录。
5 、 externalDataSize; // 外部数据大小。
6 、 externalCacheSize; // 外部缓冲数据大小。如果此目录是 externalDataSize 的子目录,则此大小包含在 externalDataSize 中。

详细信息科参考:http://blog.csdn.net/qq_23547831/article/details/50517384

  • 缓存
    缓存大小 = cacheSize + externalCacheSize 。

  • 权限

1)查看权限详情:主要为App运行过程中需要哪些权限,可以分为:安全相关权限,隐私相关权限,其他相关权限等等

2)权限管理:可以手动更高App的权限,比如App安装时已经授权了可以使用定位权限,这里可以手动禁止改App拥有定位权限(但是一般不推荐这样操作,禁用相关权限可能会使App中一些相关的功能无法使用)

  • 其他操作

1)结束运行:强制结束App的运行,退出App;
2)卸载:卸载app

其他问题:

打开手机设置-》应用管理-》某一应用-》清除数据,这个操作是清除某一个App的数据,那么到底会清除那些数据呢?

这里新建一个项目com.chao.ttext,我们在项目数据目录:data/data/com.chao.ttext目录下创建缓存数据目录

data/data/com.chao.ttext # lslib 存放使用的包files 存放应用程序自己保存的文件databases 存放数据库数据shared_prefs SP文件cache 存放缓存数据app_appcache H5缓存app_databases webview缓存app_geolocation 定位缓存

然后我们为每个目录添加一个新的空文件用于判断清除数据的结果:

/data/data/com.chao.ttext # touch lib/temp.txt/data/data/com.chao.ttext # touch files/temp.txt/data/data/com.chao.ttext # touch databases/temp.txt/data/data/com.chao.ttext # touch shared_prefs/temp.txt/data/data/com.chao.ttext # touch cache/temp.txt/data/data/com.chao.ttext # touch app_appcache/temp.txt/data/data/com.chao.ttext # touch app_databases/temp.txt/data/data/com.chao.ttext # touch app_geolocation/temp.txt

打开设置-》应用管理-》ttext-》清除数据

然后在查看ttext数据目录下的数据情况:

/data/data/com.chao.ttext # lslib

然后进入lib目录查看temp.txt文件是否还存在,结果还是存在的。

结论:清除数据会清除App数据目录下除lib文件以外的所有文件和目录。

参考:http://droidyue.com/blog/2014/06/15/what-will-be-removed-if-you-click-clear-data-button-in-system-application-item/

3 0