用GridView展示已经安装的应用
来源:互联网 发布:香港专业教育学院 知乎 编辑:程序博客网 时间:2024/05/17 07:55
activity_example2.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"> <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="90dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="columnWidth" android:verticalSpacing="10dp"> </GridView></LinearLayout>
item 组件——item_gridview2.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"> <ImageView android:id="@+id/img_appIcon" android:layout_width="50dp" android:layout_height="50dp" android:scaleType="centerCrop" /> <TextView android:id="@+id/tv_appName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="测试" /></LinearLayout>
实体类AppInfo.java
package com.studio.gridviewproj.model;import android.graphics.drawable.Drawable;public class AppInfo { /** * 应用名称 */ private String appName; /** * 应用包名 */ private String packageName; /** * 版本名称 */ private String versionName; /** * 版本号 */ private int versionCode; /** * 应用图标 */ private Drawable appIcon; public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getVersionName() { return versionName; } public void setVersionName(String versionName) { this.versionName = versionName; } public int getVersionCode() { return versionCode; } public void setVersionCode(int versionCode) { this.versionCode = versionCode; } public Drawable getAppIcon() { return appIcon; } public void setAppIcon(Drawable appIcon) { this.appIcon = appIcon; }}
ExampleActivity2.java
package com.studio.gridviewproj;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.widget.GridView;import com.studio.gridviewproj.adapter.GridAdapter2;import com.studio.gridviewproj.model.AppInfo;import java.util.ArrayList;import java.util.List;public class ExampleActivity2 extends AppCompatActivity { private GridView gridView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_example2); gridView = (GridView) findViewById(R.id.gridview); GridAdapter2 gridAdapter2 = new GridAdapter2(this, getAppList()); gridView.setAdapter(gridAdapter2); } public List<AppInfo> getAppList() { List<AppInfo> appInfoList = new ArrayList<>(); //包管理器 PackageManager packageManager = getPackageManager(); //获取已经安装的包的集合 List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0); for (int i = 0; i < installedPackages.size(); i++) { PackageInfo packageInfo = installedPackages.get(i); AppInfo appInfo = new AppInfo(); appInfo.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString()); appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager)); appInfo.setPackageName(packageInfo.packageName); appInfo.setVersionCode(packageInfo.versionCode); appInfo.setVersionName(packageInfo.versionName); //过滤掉系统应用 if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { appInfoList.add(appInfo); } } return appInfoList; }}
适配器GridAdapter2.java
package com.studio.gridviewproj.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.studio.gridviewproj.R;import com.studio.gridviewproj.model.AppInfo;import java.util.List;public class GridAdapter2 extends BaseAdapter { private Context context; private List<AppInfo> appInfoList; public GridAdapter2(Context context, List<AppInfo> appInfoList) { this.appInfoList = appInfoList; this.context = context; } @Override public int getCount() { return appInfoList.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null) { view = View.inflate(context, R.layout.item_gridview2, null); holder = new ViewHolder(); holder.img_appIcon = view.findViewById(R.id.img_appIcon); holder.tv_appName = view.findViewById(R.id.tv_appName); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } AppInfo appInfo = appInfoList.get(i); holder.img_appIcon.setImageDrawable(appInfo.getAppIcon()); holder.tv_appName.setText(appInfo.getAppName() + " " + appInfo.getVersionName()); return view; } public class ViewHolder { ImageView img_appIcon; TextView tv_appName; }}
阅读全文
0 0
- 用GridView展示已经安装的应用
- Gridview控件展示所有应用
- 用GridView展示文字
- 用AsyncTask加载手机中已经安装的应用信息
- android 获取系统已经安装的应用
- 获取已经安装应用apk的方法
- android 调用系统其他已经安装的应用的方法
- iOS 获取已经安装应用
- android中调用已经安装的某个应用
- Android 中获取已经安装的应用列表
- iOS 获取手机上已经安装的应用
- GridView 的扩展应用
- gridview的应用点滴
- GridView的应用
- GridView的几个应用
- gridview的一些应用
- GridView组件的应用
- GridView的应用一
- sqlyog注册码
- 大数据预科班3
- Atcoder Together
- 数据类型 数据类型转换 运算符
- 【NOIP2015D2】 解题报告
- 用GridView展示已经安装的应用
- jdbc存储过程
- Java基础部分总结3
- setup.py文件
- jdbc的工具类
- SBAS
- #include不同文件夹下的头文件
- 星球联盟
- Fbx文件的加载与渲染:一个DirectX11小项目开源啦,主要用来演示fbx文件的加载与渲染