- 浏览: 185381 次
- 性别:
- 来自: 浙江
文章分类
最新评论
有时需对已安装的应用进行管理 , 这里我简单的写了获取应用程序列表。
代码如下:
package com.lml.applicationtest;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
private List<PackageInfo> pakageinfos;
private PackageManager pm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list);
makeList();
}
private void makeList() {
pm = getPackageManager();
pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
lv.setAdapter(new MyAdapter(this));
}
private class MyAdapter extends BaseAdapter {
private Context context;// 用于接收传递过来的Context对象
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return pakageinfos.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
PackageInfo info = pakageinfos.get(arg0);
View view = View.inflate(context, R.layout.item, null);
Drawable drawable=info.applicationInfo.loadIcon(pm);
((ImageView) view.findViewById(R.id.iv)).setImageDrawable(zoomDrawable(drawable,50,50));
((TextView) view.findViewById(R.id.tv)).setText(info.applicationInfo.loadLabel(pm));
return view;
}
}
private Bitmap drawableToBitmap(Drawable drawable)// drawable 转换成bitmap
{
int width = drawable.getIntrinsicWidth(); // 取drawable的长宽
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565; // 取drawable的颜色格式
Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应bitmap
Canvas canvas = new Canvas(bitmap); // 建立对应bitmap的画布
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas); // 把drawable内容画到画布中
return bitmap;
}
private Drawable zoomDrawable(Drawable drawable, int w, int h)
{
int width = drawable.getIntrinsicWidth();
int height= drawable.getIntrinsicHeight();
Bitmap oldbmp = drawableToBitmap(drawable);// drawable转换成bitmap
Matrix matrix = new Matrix(); // 创建操作图片用的Matrix对象
float scaleWidth = ((float)w / width); // 计算缩放比例
float scaleHeight = ((float)h / height);
matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例
Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的bitmap,其内容是对原bitmap的缩放后的图
return new BitmapDrawable(getResources() ,newbmp); // 把bitmap转换成drawable并返回
}
}
代码如下:
package com.lml.applicationtest;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
private List<PackageInfo> pakageinfos;
private PackageManager pm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list);
makeList();
}
private void makeList() {
pm = getPackageManager();
pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
lv.setAdapter(new MyAdapter(this));
}
private class MyAdapter extends BaseAdapter {
private Context context;// 用于接收传递过来的Context对象
public MyAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return pakageinfos.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
PackageInfo info = pakageinfos.get(arg0);
View view = View.inflate(context, R.layout.item, null);
Drawable drawable=info.applicationInfo.loadIcon(pm);
((ImageView) view.findViewById(R.id.iv)).setImageDrawable(zoomDrawable(drawable,50,50));
((TextView) view.findViewById(R.id.tv)).setText(info.applicationInfo.loadLabel(pm));
return view;
}
}
private Bitmap drawableToBitmap(Drawable drawable)// drawable 转换成bitmap
{
int width = drawable.getIntrinsicWidth(); // 取drawable的长宽
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565; // 取drawable的颜色格式
Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应bitmap
Canvas canvas = new Canvas(bitmap); // 建立对应bitmap的画布
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas); // 把drawable内容画到画布中
return bitmap;
}
private Drawable zoomDrawable(Drawable drawable, int w, int h)
{
int width = drawable.getIntrinsicWidth();
int height= drawable.getIntrinsicHeight();
Bitmap oldbmp = drawableToBitmap(drawable);// drawable转换成bitmap
Matrix matrix = new Matrix(); // 创建操作图片用的Matrix对象
float scaleWidth = ((float)w / width); // 计算缩放比例
float scaleHeight = ((float)h / height);
matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例
Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的bitmap,其内容是对原bitmap的缩放后的图
return new BitmapDrawable(getResources() ,newbmp); // 把bitmap转换成drawable并返回
}
}
- ApplicationTest.rar (1.3 MB)
- 下载次数: 2
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
在Android开发中,获取应用列表是一项常见的任务,它涉及到对系统API的调用以及数据的展示。本篇文章将深入探讨如何实现这一功能,并结合MVC(Model-View-Controller)设计模式来阐述整个过程。 首先,我们需要理解...
本文将详细讲解如何在Android系统中获取应用程序的权限列表,并针对日志记录中使用的"jishen" TAG进行讨论。 1. **权限模型概述** Android的权限模型基于声明式权限,开发者在应用的AndroidManifest.xml文件中声明...
2. 使用`getInstalledPackages(int flags)`方法获取应用列表。`flags`参数可以用来过滤系统应用或其他类型的应用,例如: ```java List<ApplicationInfo> installedApps = packageManager.getInstalled...
首先,Android系统提供了`PackageManager`类,它是获取应用程序信息的主要入口。通过这个类,开发者可以获取到设备上所有已安装应用的详细信息,包括应用的名称、图标、版本信息、权限等。下面是一段基本的代码示例...
在Android系统中,获取应用程序列表信息是开发过程中常见的需求,比如构建应用管理界面或实现某些特定功能。以下将详细介绍如何通过编程方式实现这四个主要目标: 1. **Android中获取所有应用程序列表信息** 要...
在Android设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用...此程序的目的就列举出后台正在运行的应用列表。
在实际应用中,还可以根据需要添加更多功能,比如获取应用图标、启动应用、检查更新等。对于开发者而言,理解并熟练运用`PackageManager`是构建功能丰富、用户体验良好的Android应用必不可少的技能。
`PackageManager`还提供了其他功能,例如查询特定应用的信息(`getPackageInfo(String packageName, int flags)`)、检查应用是否已安装(`resolveActivity(Intent intent, int flags)`)以及获取应用的权限列表(`...
原生获取手机应用列表,代码亲测!
对于非root用户,我们可以通过Content Provider来获取应用列表。Android提供了`PackageManager`类,它允许开发者查询和管理设备上的应用程序。以下是一个简单的示例代码,展示如何获取已安装的应用程序列表: ```...
下面将详细讲解如何通过`queryIntentActivities()`方法获取应用信息。 首先,我们需要创建一个`Intent`对象,用于定义我们想要查询的类型。通常,我们可以使用`Intent.ACTION_MAIN`和`Intent.CATEGORY_LAUNCHER`来...
`PackageManager`是Android系统提供用于获取应用包信息的接口。下面是一个示例代码,展示如何获取已下载应用的列表: ```java // 获取PackageManager实例 PackageManager packageManager = context....
- 自动清理:可以编写一个简单的Android应用,获取应用列表并遍历,调用`Context.deleteDatabase()`或`Context.deleteCacheDir()`方法清理缓存。 2. **iOS系统**: - 用户界面:通过设置 > 通用 > iPhone 存储,...
在Android系统中,获取所有应用程序的数据是一个常见的需求,这通常涉及到获取用户安装的应用列表以及它们的相关信息,如图标、名称、包名等。在提供的代码段中,我们看到一个名为`getLaunchAppList`的方法,它实现...
- 异步处理:由于获取应用列表可能会涉及I/O操作,因此建议在后台线程执行,避免阻塞UI。 - 缓存结果:如果频繁请求应用列表,可以考虑缓存结果,减少不必要的系统调用。 - 权限控制:如果只需要用户应用,不需要...
Android获取分享应用列表详解及实例 Android获取分享应用列表详解及实例是指在Android系统中获取当前设备中所有支持分享的应用列表,并且实现对应的分享功能的过程。下面将详细介绍Android获取分享应用列表详解及...
接下来,我们讲解如何获取所有应用列表。在Android中,我们可以使用`PackageManager`类来获取系统中所有安装的应用信息。以下是一个简单的示例: ```java PackageManager packageManager = getApplicationContext()...
在Android和iOS等移动操作系统中,获取手机所有...在实际开发中,还需要注意权限请求,特别是在Android 6.0及以上版本,可能需要动态请求权限来获取应用信息。同时,了解并遵守各平台的隐私政策,确保应用的合规性。