获取应用程序所有安装包信息
来源:互联网 发布:c 经典书籍 知乎 编辑:程序博客网 时间:2024/04/30 11:14
PackageManger 类
说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。
常用方法:
public abstract PackageManager getPackageManager()
功能:获得一个PackageManger对象
public abstrac tDrawable getApplicationIcon(StringpackageName)
参数: packageName 包名
功能:返回给定包名的图标,否则返回null
public abstractApplicationInfo getApplicationInfo(String packageName, int flags)
参数:packagename 包名
flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回该ApplicationInfo对象
public abstract List<ApplicationInfo> getInstalledApplications(int flags)
参数:flag为一般为GET_UNINSTALLED_PACKAGES,那么此时会返回所有ApplicationInfo。我们可以对ApplicationInfo
的flags过滤,得到我们需要的。
功能:返回给定条件的所有PackageInfo
public abstractList<PackageInfo> getInstalledPackages(int flags)
参数如上
功能:返回给定条件的所有PackageInfo
public abstractResolveInfo resolveActivity(Intent intent, int flags)
参数: intent 查寻条件,Activity所配置的action和category
flags:MATCH_DEFAULT_ONLY :Category必须带有CATEGORY_DEFAULT的Activity,才匹配
GET_INTENT_FILTERS :匹配Intent条件即可
GET_RESOLVED_FILTER :匹配Intent条件即可
功能 :返回给定条件的ResolveInfo对象(本质上是Activity)
public abstract List<ResolveInfo> queryIntentActivities(Intent intent, int flags)
参数同上
功能 :返回给定条件的所有ResolveInfo对象(本质上是Activity),集合对象
public abstractResolveInfo resolveService(Intent intent, int flags)
参数同上
功能 :返回给定条件的ResolveInfo对象(本质上是Service)
public abstractList<ResolveInfo>queryIntentServices(Intent intent, int flags)
参数同上
功能 :返回给定条件的所有ResolveInfo对象(本质上是Service),集合对象
1.DEMO:
app_info.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView></LinearLayout>
snippetlistrow.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/app_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:scaleType="centerCrop" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:orientation="vertical" android:paddingLeft="5dp" > <TextView android:id="@+id/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:textStyle="bold" /> <TextView android:id="@+id/app_package" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" /> </LinearLayout> <TextView android:id="@+id/app_system" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:paddingLeft="10dp" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/app_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:scaleType="centerCrop" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:orientation="vertical" android:paddingLeft="5dp" > <TextView android:id="@+id/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:textStyle="bold" /> <TextView android:id="@+id/app_package" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" /> </LinearLayout> <TextView android:id="@+id/app_system" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:paddingLeft="10dp" /></LinearLayout>
snippetlistrow.xmlsnippetlistrow.xml
===================================JAVA代码===================================
AllAppsActivity.class
package com.example.webservicedemo;import java.util.ArrayList;import java.util.List;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Bundle;import android.provider.Settings;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;@SuppressLint("InlinedApi")public class AllAppsActivity extends Activity {private PackageManager packageManager = null;private List<ApplicationInfo> applist = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.app_info);ListView list = (ListView) findViewById(R.id.listview);packageManager = getPackageManager();applist = checkForLaunchIntent(packageManager.getInstalledApplications(PackageManager.GET_META_DATA));list.setAdapter(new ApplicationAdapter(AllAppsActivity.this, applist));list.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {uninstallApp(AllAppsActivity.this,applist.get(position).packageName);}});}// (注:1、两种方式均可;2、appPackage为resolveInfo.activityInfo.packageName)public void uninstallApp(Context context, String appPackage) {Uri packageURI = Uri.parse("package:" + appPackage);// 自定义卸载// Intent uninstallIntent = new Intent(Intent.ACTION_DELETE,// packageURI);// ((Activity)context).startActivityForResult(uninstallIntent, 0);// 调用系统自带卸载操作进行卸载Intent uninstallIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);context.startActivity(uninstallIntent);}private ArrayList<ApplicationInfo> checkForLaunchIntent(List<ApplicationInfo> list) {ArrayList<ApplicationInfo> applist = new ArrayList<ApplicationInfo>();for (ApplicationInfo info : list) {if (packageManager.getLaunchIntentForPackage(info.packageName) != null)applist.add(info);}return applist;}class ApplicationAdapter extends BaseAdapter {private List<ApplicationInfo> appsList = null;private Context context;private PackageManager packageManager;public ApplicationAdapter(Context con, List<ApplicationInfo> applist) {this.context = con;this.appsList = applist;this.packageManager = context.getPackageManager();}@Overridepublic int getCount() {return ((null != appsList) ? appsList.size() : 0);}@Overridepublic ApplicationInfo getItem(int position) {return ((null != appsList) ? appsList.get(position) : null);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.snippetlistrow, null);viewHolder = new ViewHolder();viewHolder.appImg = (ImageView) convertView.findViewById(R.id.app_icon);viewHolder.appName = (TextView) convertView.findViewById(R.id.app_name);viewHolder.appPName = (TextView) convertView.findViewById(R.id.app_package);viewHolder.appSystem = (TextView) convertView.findViewById(R.id.app_system);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.appImg.setImageDrawable(appsList.get(position).loadIcon(packageManager));viewHolder.appName.setText(appsList.get(position).loadLabel(packageManager));viewHolder.appPName.setText(appsList.get(position).packageName);viewHolder.appSystem.setText("" + filterApp(appsList.get(position)));return convertView;}public final class ViewHolder {public ImageView appImg;public TextView appName;public TextView appPName;public TextView appSystem;}/** * 判断某一个应用程序是不是系统的应用程序, 如果是返回true,否则返回false。 */public boolean filterApp(ApplicationInfo info) {// 有些系统应用是可以更新的,如果用户自己下载了一个系统的应用来更新了原来的,它还是系统应用,这个就是判断这种情况的if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {return true;} else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {// 判断是不是系统应用return true;}return false;}}/** * 查询手机内非系统应用---待验证 * * @param context * @return */public static List<PackageInfo> getAllApps(Context context) {List<PackageInfo> apps = new ArrayList<PackageInfo>();PackageManager pManager = context.getPackageManager();// 获取手机内所有应用List<PackageInfo> pakList = pManager.getInstalledPackages(0);for (int i = 0; i < pakList.size(); i++) {PackageInfo pak = pakList.get(i);// 判断是否为非系统预装的应用程序if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {// customs applicationsapps.add(pak);}}return apps;}}
权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.GET_TASKS" />
转载注明出处::http://blog.csdn.net/lixiaolei5446/article/details/17416661
- 获取应用程序所有安装包信息
- 获取所有已安装软件以及获取应用程序版本信息
- 获取手机所有应用程序的信息
- 获取安装的应用程序信息
- 判断某个应用程序是 不是三方的应用程序 及获取安装的所有的程序信息的集合
- 几种获取应用程序/apk安装包版本信息的方法
- 获取手机中安装的所有应用程序
- 获取手机中安装的所有应用程序
- 获取手机中安装的所有应用程序
- 获取手机中安装的所有应用程序
- 获取手机中安装的所有应用程序
- Android之获取手机上已安装的所有的应用程序的信息,并判断是否安装了某应用程序(系统程序或非系统应用程序判断)
- 整理PackageManager,获取所有安装程序信息
- 整理PackageManager,获取所有安装程序信息
- 获取所有已安装的程序信息
- 获取安装应用程序apk的信息
- python获取所有的安装包
- 获取手机内所有应用程序相关信息的方法
- Android4.2 PHONE模式之截屏快捷按钮
- php中heredoc的使用方法
- quartz使用cron表达式的实例
- 蓝牙的SDP协议总结
- mysql中bigint和datetime互转,并通过navicat实现批量修改。
- 获取应用程序所有安装包信息
- java之适配器模式
- 修数字手表
- java的几种对象(PO,VO,DAO,BO,POJO)解释
- Extjs form表单 动态设置标签的隐藏和显示 (解决问题)
- ios文件和文件夹管理
- android.content.res.Resources$NotFoundException: String resource ID #0x1
- windbg 调试驱动设置断点
- GNS3桥接物理网卡不通解决方法