Git Product home page Git Product logo

appbrowser's Introduction

AppBrowser(Application属性查看器,不需要越狱!!!)

不需要越狱,调用私有方法 --- 获取完整的已安装应用列表、打开和删除应用操作、应用运行时相关信息的查看。

支持iOS10.X

功能

  • 已安装的应用列表
  • 应用的详情界面 (打开应用,删除应用,应用的相关信息展示)
  • 应用运行时信息展示(LSApplicationProxy)
  • 定制喜欢的字段,展示在应用详情界面

介绍

所有已安装应用列表(应用icon+应用名)

为了提供思路,这里只用伪代码,具体的私有代码调用请查看:AppBrowser/AppBrowser/Model/LANAppHelper.m

获取应用实例:

//首先获取 LSApplicationWorkspace 实例
//对应于LANAppHelper类中的+(id)defaultWorkspace;方法:
id<LSApplicationWorkspace *> applicationWorkspace = [LSApplicationWorkspace defaultWorkspace];

//使用 LSApplicationWorkspace 获取应用列表(LSApplicationProxy对象列表)
//对应于LANAppHelper类中的+(id)allInstalledApplications;方法:
NSArray<LSApplicationProxy *> applicationArray = [applicationWorkspace allInstalledApplications];

//取出第一个应用对象
id<LSApplicationProxy *> application = applicationArray[0];

获取应用名和应用的icon:

/* 
 * APP_NAME_KEY_PATH 和 APP_SHORT_NAME_KEY_PATH 的定义在代码头上
 * 应用的名字有可能出现在两个地方:
 * 在桌面上显示的普通应用的应用名来自info.plist文件中的CFBundleDisplayName字段
 * 在桌面的部分系统应用显示的是localizedShortName
 * 对应于LANAppHelper类中的+(id)nameForApplication:(id)application;方法:
 */
 
 #define APP_NAME_KEY_PATH @"_infoDictionary.propertyList.CFBundleDisplayName"
 #define APP_SHORT_NAME_KEY_PATH @"localizedShortName"
 
NSString *applicationName = [application valueForKeyPath:APP_NAME_KEY_PATH] ?:
                                      [application valueForKeyPath:APP_SHORT_NAME_KEY_PATH];

/* 
 * 应用的图片可以调用UIImage的私用方法:_applicationIconImageForBundleIdentifier:format:scale:
 * 传入BundleID,格式,缩放大小
 * 对应于LANAppHelper类中的+(id)iconForApplication:(id)application;方法:
 */
 UIImage *applicationImage = [UIImage _applicationIconImageForBundleIdentifier:[application bundleIdentifier] 
                                                                        format:@"" 
                                                                         scale:@([UIScreen mainScreen].scale)];

应用列表界面展示:

应用列表

应用运行时详情

打开应用:

//对应于LANAppHelper类中的+ (BOOL)openApplication:(id)application方法:
[applicationWorkspace openApplicationWithBundleID:[application bundleIdentifier]];

卸载应用:

//对应于LANAppHelper类中的+ (BOOL)removeApplication:(id)application方法:
[applicationWorkspace uninstallApplication:[application bundleIdentifier] withOptions:nil];

获取info.plist文件:

//info.plist文件实例化以后就是_infoDictionary属性,位置在[LSApplicationProxy superClass],也就是在LSBundleProxy类中
#define APP_PROPERTY_LIST_KEY_PATH @"_infoDictionary.propertyList"

应用运行时详情界面展示:

应用运行时详情

  • 右上角,从左往右第一个按钮用来打开应用;第二个按钮用来卸载这个应用
  • INFO按钮用来解析并显示出对应的LSApplicationProxy类

树形展示LSApplicationProxy类

通过算法,将LSApplicationProxy类,转换成了字典。

转换规则是:属性名为key,属性值为value,如果value是一个可解析的类(除了NSString,NSNumber...等等)或者是个数组或字典,则继续递归解析。 并且会找到superClass的属性并解析,superClass如果也符合解析原则,也会进入递归解析。

具体算法可以查看 LANAppHelper.m文件中的

+(NSDictionary *)infoForApplication:(id)application;

解析LSApplicationProxy类

功能演示

已安装的应用列表

已安装的应用列表

应用详情页

应用详情页

打开应用

打开应用

卸载应用

卸载应用

应用属性列表

应用属性列表

参考及引用

appbrowser's People

Contributors

0xlan avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.