欢迎使用CSDN-markdown编辑器
来源:互联网 发布:浙江网络作协 编辑:程序博客网 时间:2024/05/29 15:25
AppInfo
MainActivity.java
package com.example.a10223567.appinfo;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.content.pm.ResolveInfo;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity{ private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.list_item); setAdapter(getAllapps(MainActivity.this, 0));// apk信息 PackageInfo info = this.getPackageManager().getPackageArchiveInfo("/sdcard/app-release.apk", PackageManager.GET_ACTIVITIES); ApplicationInfo appInfo = null; if (info != null) { appInfo = info.applicationInfo; Log.d("fuck", "packageName--->"+ appInfo.packageName); }// 按钮 Button systemApp = (Button) findViewById(R.id.button_system); Button nonsystemApp = (Button) findViewById(R.id.button_nonsystem); systemApp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setAdapter(getAllapps(MainActivity.this, 1)); } }); nonsystemApp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setAdapter(getAllapps(MainActivity.this, 2)); } }); }// adapter render public void setAdapter(List<AppDetail> list){ AppInfoAdapter adapter = new AppInfoAdapter(this, R.layout.app_item, list); lv.setAdapter(adapter); } private String getVersionName(String packageName) { PackageManager pm = getPackageManager(); PackageInfo packInfo = null; try { packInfo = pm.getPackageInfo(packageName, 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } String version = packInfo.versionName + " Code: " + packInfo.versionCode; return version != null ? version : "未获取到系统版本号"; }// 是否是系统应用 public Boolean isSystemApp(Context context,ResolveInfo resolveInfo){ PackageInfo packInfo = null; String packageName = resolveInfo.activityInfo.packageName; try { packInfo = context.getPackageManager().getPackageInfo(packageName, 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if ((packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0){ return false; } else { return true; } }// 获取所有应用的信息 public List<AppDetail> getAllapps(Context context, int type){ List<AppDetail> apps = new ArrayList<>(); PackageManager pm = context.getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); //查询ResolveInfo对象 List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT); for (int i = 0; i < resolveInfos.size(); i++){ AppDetail temp = new AppDetail(); ResolveInfo resolveInfo = resolveInfos.get(i); temp.setAppIcon(resolveInfo.loadIcon(pm)); temp.setAppName(resolveInfo.loadLabel(pm).toString()); temp.setPackageName(resolveInfo.activityInfo.packageName); temp.setVersionName(getVersionName(resolveInfo.activityInfo.packageName));// temp.setAppPath(getAppDir(this, resolveInfo)); switch(type){ case 1: if (isSystemApp(this, resolveInfo)){ apps.add(temp); } break; case 2: if (!isSystemApp(this, resolveInfo)){ apps.add(temp); } break; default: apps.add(temp); } } return apps; }}
AppInfoAdapter
package com.example.a10223567.appinfo;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by 10223567 on 2017/8/3. */public class AppInfoAdapter extends ArrayAdapter<AppDetail>{ private int resourceId; public AppInfoAdapter(Context context, int textViewResourceId, List<AppDetail> objects){ super(context, textViewResourceId, objects); resourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent){ AppDetail appDetail = getItem(position); View view; ViewHolder viewHolder; if (convertView == null){ view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false); viewHolder = new ViewHolder(); viewHolder.appIcon = (ImageView) view.findViewById(R.id.app_icon); viewHolder.appName = (TextView) view.findViewById(R.id.app_name); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.appIcon.setImageDrawable(appDetail.getAppIcon()); viewHolder.appName.setText(appDetail.getAppName() +"\n"+ appDetail.getPackageName() +"\n"+ appDetail.getVersionName() +"\n"+ appDetail.getAppPath()); return view; } class ViewHolder{ ImageView appIcon; TextView appName; }}
AppDetail
package com.example.a10223567.appinfo;import android.graphics.drawable.Drawable;/** * Created by 10223567 on 2017/8/3. */public class AppDetail { private Drawable appIcon;//应用的图标 private String appName;//应用名称 private String packageName;//应用的包名 private String versionName;//版本名 private String appPath; public String getAppName(){ return appName; } public void setAppName(String appName){ this.appName = appName; } public Drawable getAppIcon(){ return appIcon; } public void setAppIcon(Drawable appIcon){ this.appIcon = appIcon; } public void setVersionName(String versionName){ this.versionName = versionName; } public String getVersionName(){ return versionName; } public void setPackageName(String packageName){ this.packageName = packageName; } public String getPackageName(){ return packageName; } public void setAppPath(String appPath){ this.appPath = appPath; } public String getAppPath() { return appPath; }}
app_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/app_icon" android:scaleType="centerInside" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_vertical" android:padding="2dp" /> <TextView android:id="@+id/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:lineSpacingExtra="2dp" /></LinearLayout>
activity_main.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" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_system" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="系统应用" android:layout_weight="1" /> <Button android:id="@+id/button_nonsystem" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="第三方应用" android:layout_weight="1" /> </LinearLayout> <ListView android:id="@+id/list_item" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView></LinearLayout>
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 1187: 棒棒糖(结构体专题)
- 软件定时器
- Matlab中的基本绘图方法
- JS&jQuery初级07
- elasticsearch-sql
- 欢迎使用CSDN-markdown编辑器
- linux 目录结构
- VM虚拟机 ubuntu16.04配置CPU版本的caffe
- java基础部分总结2
- linux学习之旅(十五(上))&磁盘
- 笨办法学 Python · 续 第二部分:简单的黑魔法
- linux 安装svn
- How Many Maos Does the Guanxi Worth --HDU
- 2017年08月04日