android手把手教你开发launcher(二)——列出安装的应用程序
2014-02-21 16:33
489 查看
预备知识: GridView的使用 \ 改写BaseAdapter
列出已经安装的应用程序是作为launcher比不可少的功能。下面我们就讲解怎样将应用程序列出来。程序运行后的样子如下:
一. 修改main.xml,在其中添加一个GridView用来显示应用程序列表。
修改后如下:
[html] view
plaincopyprint?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<GridView android:layout_width="match_parent"
android:id="@+id/apps_list"
android:numColumns="4"
android:layout_height="wrap_content">
</GridView>
</RelativeLayout>
二 . 通过PackageManager的api 查询已经安装的apk
我们写一个叫做loadApps的方法将活得的应用程序列表放到private List<ResolveInfo> mApps; 中,如下:
[java] view
plaincopyprint?
private void loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
new ImageView(MainActivity.this);
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
}
三. 实现用于显示Gridview的Adapter,使其显示获得的应用程序列表
直接上代码:
?
[java] view
plaincopyprint?
public class AppsAdapter extends BaseAdapter {
public AppsAdapter(){
}
@Override
public int getCount() {
return apps.size();
}
@Override
public Object getItem(int i) {
return apps.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView iv;
if(view == null){
iv = new ImageView(MainActivity.this);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new GridView.LayoutParams(50, 50));
} else {
iv = (ImageView) view;
}
ResolveInfo info = apps.get(i);
iv.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return iv;
}
}
最后整个Activity的代码如下
[java] view
plaincopyprint?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private List<ResolveInfo> apps;
private void loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
new ImageView(MainActivity.this);
apps = getPackageManager().queryIntentActivities(mainIntent, 0);
}
public class AppsAdapter extends BaseAdapter {
public AppsAdapter(){
}
@Override
public int getCount() {
return apps.size();
}
@Override
public Object getItem(int i) {
return apps.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView iv;
if(view == null){
iv = new ImageView(MainActivity.this);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new GridView.LayoutParams(50, 50));
} else {
iv = (ImageView) view;
}
ResolveInfo info = apps.get(i);
iv.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return iv;
}
}
}
android手把手教你开发launcher(一)(AndroidStudio版)
android手把手教你开发launcher(二)——列出安装的应用程序
android手把手教你开发launcher(三)——启动安装的应用程序
android手把手教你开发launcher(四)——显示widget
android手把手教你开发launcher(五)——设置壁纸
转自:http://www.bangchui.org/read.php?tid=11761
列出已经安装的应用程序是作为launcher比不可少的功能。下面我们就讲解怎样将应用程序列出来。程序运行后的样子如下:
一. 修改main.xml,在其中添加一个GridView用来显示应用程序列表。
修改后如下:
[html] view
plaincopyprint?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<GridView android:layout_width="match_parent"
android:id="@+id/apps_list"
android:numColumns="4"
android:layout_height="wrap_content">
</GridView>
</RelativeLayout>
二 . 通过PackageManager的api 查询已经安装的apk
我们写一个叫做loadApps的方法将活得的应用程序列表放到private List<ResolveInfo> mApps; 中,如下:
[java] view
plaincopyprint?
private void loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
new ImageView(MainActivity.this);
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
}
三. 实现用于显示Gridview的Adapter,使其显示获得的应用程序列表
直接上代码:
?
[java] view
plaincopyprint?
public class AppsAdapter extends BaseAdapter {
public AppsAdapter(){
}
@Override
public int getCount() {
return apps.size();
}
@Override
public Object getItem(int i) {
return apps.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView iv;
if(view == null){
iv = new ImageView(MainActivity.this);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new GridView.LayoutParams(50, 50));
} else {
iv = (ImageView) view;
}
ResolveInfo info = apps.get(i);
iv.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return iv;
}
}
最后整个Activity的代码如下
[java] view
plaincopyprint?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private List<ResolveInfo> apps;
private void loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
new ImageView(MainActivity.this);
apps = getPackageManager().queryIntentActivities(mainIntent, 0);
}
public class AppsAdapter extends BaseAdapter {
public AppsAdapter(){
}
@Override
public int getCount() {
return apps.size();
}
@Override
public Object getItem(int i) {
return apps.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ImageView iv;
if(view == null){
iv = new ImageView(MainActivity.this);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new GridView.LayoutParams(50, 50));
} else {
iv = (ImageView) view;
}
ResolveInfo info = apps.get(i);
iv.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return iv;
}
}
}
android手把手教你开发launcher(一)(AndroidStudio版)
android手把手教你开发launcher(二)——列出安装的应用程序
android手把手教你开发launcher(三)——启动安装的应用程序
android手把手教你开发launcher(四)——显示widget
android手把手教你开发launcher(五)——设置壁纸
转自:http://www.bangchui.org/read.php?tid=11761
相关文章推荐
- android手把手教你开发launcher(二)——列出安装的应用程序
- android手把手教你开发launcher(二)——列出安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- android手把手教你开发launcher(三)——启动安装的应用程序
- (转)Android Launcher研究-----------列出所安装的应用,点击进入相应的应用
- android手把手教你开发launcher(一)
- [置顶] 【Android应用开发】-(18)静默方式实现批量安装卸载应用程序
- android手把手教你开发launcher(五)——设置壁纸
- android开发的应用程序,用模拟器可以访问,但是安装到手机上却不行
- Android Launcher开发(四)Launcher概述及简单添加和删除应用程序的快捷方式
- 学习AndroidLauncher(一)启动安装的应用程序
- NetBeans 7.0 安装 Android SDK 开发 Android 应用程序
- Android Launcher开发添加应用程序的快捷方式
- android手把手教你开发launcher(二)
- android手把手教你开发launcher(一)(AndroidStudio版)
- 如何在开发时可以让Android应用程序支持安装到SD卡
- android开发步步为营之15:默认让应用程序安装到手机外存sd卡上
- android手把手教你开发launcher(四)
- Android Launcher开发(五)添加应用程序桌面快捷方常见问题及解决方案