陈建华的博客
专注web开发
android手把手教你开发launcher(二)——列出安装的应用程序
2019-05-05 11:59:08   阅读50次

预备知识: GridView的使用 \ 改写BaseAdapter 

列出已经安装的应用程序是作为launcher比不可少的功能。下面我们就讲解怎样将应用程序列出来。程序运行后的样子如下:

20130923162004625.jpg

一. 修改main.xml,在其中添加一个GridView用来显示应用程序列表。
修改后如下:

<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; 中,如下:

 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,使其显示获得的应用程序列表

直接上代码:

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的代码如下

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(一)

android手把手教你开发launcher(二)——列出安装的应用程序

android手把手教你开发launcher(三)——启动安装的应用程序

android手把手教你开发launcher(四)——显示widget

android手把手教你开发launcher(五)——设置壁纸




-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
暂无评论
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航