As we all know, packagemanager can be used to obtain information about the APK files installed on the mobile phone end. The specific code is as follows:
Packagemanager = This. getpackagemanager (); <br/> List <packageinfo> packageinfolist = packagemanager. getinstalledpackages (0 );
Through the above method, you can obtain all the applications installed on your mobile phone, including information about the APK package that is manually installed and the pre-installed application software, to distinguish between the two types of software, you can use the following methods:
A. Obtain packageinfo from packageinfolist, and then obtain applicationinfo through packageinfo. applicationinfo.
B. determine the value of (applicationinfo. Flags & applicationinfo. flag_system). If the value is greater than 0, the obtained application is a pre-installed application, and vice versa.
You can check the code and the description has been written in comments.
Get the application code:
/** <Br/> * query non-system applications on the mobile phone <br/> * @ Param context <br/> * @ return <br/> */<br/> Public static list <packageinfo> getallapps (context) {<br/> List <packageinfo> apps = new arraylist <packageinfo> (); <br/> packagemanager pmanager = context. getpackagemanager (); <br/> // obtain all applications on the mobile phone <br/> List <packageinfo> paklist = pmanager. getinstalledpackages (0); <br/> for (INT I = 0; I <paklist. size (); I ++) {<br/> packageinfo Pak = (packageinfo) paklist. get (I); <br/> // determine whether the application is pre-installed. <br/> If (Pak. applicationinfo. flags & Pak. applicationinfo. flag_system) <= 0) {<br/> // customs applications <br/> apps. add (PAK); <br/>}< br/> return Apps; <br/>}
Obtain the image, application name, and package name:
Packagemanager pmanager = messagesendactivity. this. getpackagemanager (); <br/> List <packageinfo> applist = utils. getallapps (messagesendactivity. this); </P> <p> for (INT I = 0; I <applist. size (); I ++) {<br/> packageinfo pinfo = applist. get (I); <br/> your iteminfo items item = new your iteminfo (); <br/> // set icon <br/> your item. seticon (pmanager. getapplicationicon (pinfo. applicationinfo); <br/> // Set Application name <br/> your item. setlabel (pmanager. getapplicationlabel (pinfo. applicationinfo ). tostring (); <br/> // set package name <br/> specify item. setpackagename (pinfo. applicationinfo. packagename); </P> <p>}
The iteminfo class is customized locally. You can ignore it!
In addition, someone may be looking for a shared Application List. Let's talk about it here.
Obtain the code of the shared application:
/** <Br/> * query all apps that support sharing on the mobile phone <br/> * @ Param context <br/> * @ return <br/> */<br/> Public static list <resolveinfo> getmediaapps (context) {<br/> List <resolveinfo> mapps = new arraylist <resolveinfo> (); <br/> intent = new intent (intent. action_send, null); <br/> intent. addcategory (intent. category_default); <br/> intent. settype ("text/plain"); <br/> packagemanager pmanager = context. getpackagemanager (); <br/> mapps = pmanager. queryintentactivities (intent, packagemanager. component_enabled_state_default); </P> <p> return mapps; <br/>}
Because of this method, the returned packageinfo object is not. But resolveinfo. Therefore, the methods for obtaining images, application names, and package names are different:
Packagemanager pmanager = messagesendactivity. this. getpackagemanager (); </P> <p>/********************** query all apps that support sharing on the mobile phone *** * ****************/<br/> List <resolveinfo> resolvelist = utils. getmediaapps (messagesendactivity. this); </P> <p> for (INT I = 0; I <resolvelist. size (); I ++) {<br/> resolveinfo resolve = resolvelist. get (I); <br/> your iteminfo items item = new your iteminfo (); <br/> // set icon <br/> your item. seticon (resolve. loadicon (pmanager); <br/> // Set Application name <br/> your item. setlabel (resolve. loadlabel (pmanager ). tostring (); <br/> // set package name <br/> specify item. setpackagename (resolve. activityinfo. packagename); </P> <p>}
Summary:
How to Use packageinfo to obtain specific information:
Packageinfo. packagename
How to obtain the icon: packagemanager. getapplicationicon (applicationinfo)
How to obtain the application name: packagemanager. getapplicationlabel (applicationinfo)
How to obtain permissions: packagemanager. getpackageinfo (packagename, packagemanager. get_permissions)
. Requestedpermissions
How to obtain the specific information through resolveinfo:
How to obtain the package name: resolve. activityinfo. packagename
How to obtain the icon: resolve. loadicon (packagemanager)
How to obtain the application name: resolve. loadlabel (packagemanager). tostring ()