在main.xml 中:
<GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="15dp" android:horizontalSpacing="12dp" android:columnWidth="95dp" android:stretchMode="columnWidth" android:gravity="center" />
然后在item.xml给item布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <ImageView android:id="@+id/apps_image" android:layout_width="48dip" android:layout_height="48dip" android:icon="@drawable/ic_launcher" /> <TextView android:id="@+id/apps_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:maxEms="5" android:text="good" /> </LinearLayout>
在Activity中显示
public class UnloadingActivity extends Activity { // 用来记录应用程序的信息 List<AppsItemInfo> list; private GridView gridview; private PackageManager pManager; private String uninstallPackage; // int state; // int mNum; // final static int PROGRESS_DIALOG = 0; // ProgressThread progressThread; // ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.main); // 取得gridview gridview = (GridView) findViewById(R.id.gridview); // 获取图片、应用名、包名 pManager = UnloadingActivity.this.getPackageManager(); List<PackageInfo> appList = getAllApps(UnloadingActivity.this); list = new ArrayList<AppsItemInfo>(); for (int i = 0; i < appList.size(); i++) { PackageInfo pinfo = appList.get(i); AppsItemInfo shareItem = new AppsItemInfo(); // 设置图片 shareItem.setIcon(pManager .getApplicationIcon(pinfo.applicationInfo)); // 设置应用程序名字 shareItem.setLabel(pManager.getApplicationLabel( pinfo.applicationInfo).toString()); // 设置应用程序的包名 shareItem.setPackageName(pinfo.applicationInfo.packageName); list.add(shareItem); } // 设置gridview的Adapter gridview.setAdapter(new baseAdapter()); // 点击应用图标时,做出响应 gridview.setOnItemClickListener(new ClickListener()); } public static List<PackageInfo> getAllApps(Context context) { List<PackageInfo> apps = new ArrayList<PackageInfo>(); PackageManager pManager = context.getPackageManager(); // 获取手机内所有应用 List<PackageInfo> packlist = pManager.getInstalledPackages(0); for (int i = 0; i < packlist.size(); i++) { PackageInfo pak = (PackageInfo) packlist.get(i); // 判断是否为非系统预装的应用程序 // 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加 // if()里的值如果<=0则为自己装的程序,否则为系统工程自带 if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) { // 添加自己已经安装的应用程序 apps.add(pak); } } return apps; } private class baseAdapter extends BaseAdapter { LayoutInflater inflater = LayoutInflater.from(UnloadingActivity.this); @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } public final class ViewHolder { private ImageView icon; private TextView label; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (convertView == null) { // 使用View的对象itemView与R.layout.item关联 convertView = inflater.inflate(R.layout.item, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView .findViewById(R.id.apps_image); holder.label = (TextView) convertView .findViewById(R.id.apps_textview); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.icon.setImageDrawable(list.get(position).getIcon()); holder.label.setText(list.get(position).getLabel().toString()); return convertView; } } // 当用户点击应用程序图标时,将对这个类做出响应 private class ClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { AppsItemInfo app = list.get(position); uninstallPackage = app.packageName; AppUtils.uninstallApk(UnloadingActivity.this, uninstallPackage); } } // 自定义一个 AppsItemInfo 类,用来存储应用程序的相关信息 private class AppsItemInfo { private Drawable icon; // 存放图片 private String label; // 存放应用程序名 private String packageName; // 存放应用程序包名 public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } } }
package com.flyou.utils; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; /** * 跟App相关的辅助类 * * * */ public class AppUtils { private AppUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获取应用程序名称 */ public static String getAppName(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); int labelRes = packageInfo.applicationInfo.labelRes; return context.getResources().getString(labelRes); } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } /** * [获取应用程序版本名称信息] * * @param context * @return 当前应用的版本名称 */ public static String getVersionName(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); return packageInfo.versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } }
public static void uninstallApk(Context ctx, String packageName) { Uri packageURI = Uri.parse("package:" + packageName); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); ctx.startActivity(uninstallIntent); }
相关推荐
android获取已安装应用的信息 运行正常
Android开发,获取当前手机安装的所有应用、根据包名获取应用信息、获取当前应用程序的包名、获取程序 图标、获取程序的版本号、获取程序的名字、获取程序的权限、获取程序的签名、获取当前包名的 SHA1、将获取到得...
获取本机已经安装的全部软件,包括Windows更新等。
AppManager_Android获取手机里所安装的应用列表.rar
获取系统已安装应用,自定义listview实现实例
应用并获取已安装应用的列表。 该插件的灵感来自Cordova的AppAvailability插件。 入门有关Flutter入门的帮助,请查看我们的在线文档。 有关编辑插件代码的帮助,请查看文档。 安装首先,在您的pubspec.yaml文件中...
获取android设备已安装应用信息(包括:应用名称、图标、包名等)
Android中获取系统应用程序列表(有代码注释)
获取安卓手机安装应用包名,并打开对应应用
Android应用程序列表的获取,以及获取应用程序权限列表
新修改ADB,可以获取已安装的APK 各种信息,包括版本号,权限,安装时间,包路径等等信息,命令行 adb ApkInfo com.softstar.Richman
用来获取安装应用的签名,安装之后,输入应用名称即可查询
Windows 命令行脚本的四种获取已安装程序列表方法有: wmic命令 、powershell直接获取 、powershell读注册表、reg 命令读注册表。 本质上说、前两种方法是一样的,第三种方法不能被cmd/bat批处理调用。所以、用reg...
一个Android 获取手机所有已安装应用的Demo,并可以显示在Activity上!
获取手机上所有应用的信息,支持iOS10以下。私有方法,可以获取到icon,bundle id,名称等信息。
可以很方便的获取手机安装应用的签名信息,
我们手机上安装的应用默认是以GridView的形式排放的,本篇博客将讲述以ListView的形式获得所有应用,并且点击应用后可以启动。
一款能获取应用签名的app,方便开发者申请用于对当前应用进行二次身份校验,开发者可以使用签名生成工具直接从安装当前应用的手机中获取。应用签名由开发者签名该应用的keystore文件决定。
这个Demo通过PackageManager可以很快的获取关于手机下载的app信息
获取Android设备上已安装的应用信息,包括图标,应用名称,工程名,安装路径等信息。