查看: 1821|回复: 0
打印 上一主题 下一主题

获取android手机里的所有应用,点击并响应

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-22 18:13:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

先看一下效果图:

当点击《愤怒的小鸟》时,将打开《愤怒的小鸟》这个游戏

main.xml的源代码如下:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em][size=1em]<?xml version="1.0" encoding="utf-8"?>
[size=1em]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
[size=1em]    androidrientation="vertical"
[size=1em]    android:layout_width="fill_parent"
[size=1em]    android:layout_height="fill_parent"
[size=1em]    >
[size=1em]    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
[size=1em]        android:id="@+id/gridview"
[size=1em]        android:layout_width="fill_parent"
[size=1em]        android:layout_height="fill_parent"
[size=1em]        android:numColumns="auto_fit"
[size=1em]        android:verticalSpacing="15dp"
[size=1em]        android:horizontalSpacing="12dp"
[size=1em]        android:columnWidth="95dp"
[size=1em]        android:stretchMode="columnWidth"
[size=1em]        android:gravity="center"
[size=1em]        />
[size=1em]</LinearLayout>




接着是apps.xml,源代码如下:[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em][size=1em]<?xml version="1.0" encoding="utf-8"?>
[size=1em]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
[size=1em]    androidrientation="vertical"     
[size=1em]    android:layout_width="fill_parent"   
[size=1em]    android:layout_height="fill_parent"   
[size=1em]    android:gravity="center" >

[size=1em]    <ImageView
[size=1em]        android:id="@+id/apps_image"      
[size=1em]        android:layout_width="48dip"   
[size=1em]        android:layout_height="48dip"      
[size=1em]        android:icon="@drawable/icon" />   

[size=1em]    <TextView      
[size=1em]        android:id="@+id/apps_textview"   
[size=1em]        android:layout_width="wrap_content"   
[size=1em]        android:layout_height="wrap_content"      
[size=1em]        android:maxLines="1"      
[size=1em]        android:maxEms="5"     
[size=1em]        android:text="good" />

[size=1em]</LinearLayout>



接下来就是java源代码了,比较长,希望耐心看下去

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

[size=1em]24

[size=1em]25

[size=1em]26

[size=1em]27

[size=1em]28

[size=1em]29

[size=1em]30

[size=1em]31

[size=1em]32

[size=1em]33

[size=1em]34

[size=1em]35

[size=1em]36

[size=1em]37

[size=1em]38

[size=1em]39

[size=1em]40

[size=1em]41

[size=1em]42

[size=1em]43

[size=1em]44

[size=1em]45

[size=1em]46

[size=1em]47

[size=1em]48

[size=1em]49

[size=1em]50

[size=1em]51

[size=1em]52

[size=1em]53

[size=1em]54

[size=1em]55

[size=1em]56

[size=1em]57

[size=1em]58

[size=1em]59

[size=1em]60

[size=1em]61

[size=1em]62

[size=1em]63

[size=1em]64

[size=1em]65

[size=1em]66

[size=1em]67

[size=1em]68

[size=1em]69

[size=1em]70

[size=1em]71

[size=1em]72

[size=1em]73

[size=1em]74

[size=1em]75

[size=1em]76

[size=1em]77

[size=1em]78

[size=1em]79

[size=1em]80

[size=1em]81

[size=1em]82

[size=1em]83

[size=1em]84

[size=1em]85

[size=1em]86

[size=1em]87

[size=1em]88

[size=1em]89

[size=1em]90

[size=1em]91

[size=1em]92

[size=1em]93

[size=1em]94

[size=1em]95

[size=1em]96

[size=1em]97

[size=1em]98

[size=1em]99

[size=1em]100

[size=1em]101

[size=1em]102

[size=1em]103

[size=1em]104

[size=1em]105

[size=1em]106

[size=1em]107

[size=1em]108

[size=1em]109

[size=1em]110

[size=1em]111

[size=1em]112

[size=1em]113

[size=1em]114

[size=1em]115

[size=1em]116

[size=1em]117

[size=1em]118

[size=1em]119

[size=1em]120

[size=1em]121

[size=1em]122

[size=1em]123

[size=1em]124

[size=1em]125

[size=1em]126

[size=1em]127

[size=1em]128

[size=1em]129

[size=1em]130

[size=1em]131

[size=1em]132

[size=1em]133

[size=1em]134

[size=1em]135

[size=1em]136

[size=1em]137

[size=1em]138

[size=1em]139

[size=1em]140

[size=1em]141

[size=1em]142

[size=1em]143

[size=1em]144

[size=1em]145

[size=1em]146

[size=1em]147

[size=1em]148

[size=1em]149

[size=1em]150

[size=1em]151

[size=1em]152

[size=1em]153

[size=1em]154

[size=1em]155

[size=1em]156

[size=1em]157

[size=1em]158

[size=1em]159

[size=1em]160

[size=1em]161

[size=1em]162

[size=1em]163

[size=1em]164

[size=1em]165

[size=1em]166

[size=1em]167

[size=1em]168

[size=1em]169

[size=1em]170

[size=1em]171

[size=1em]172

[size=1em]173

[size=1em]174

[size=1em]175

[size=1em]176

[size=1em]177

[size=1em]178

[size=1em]179

[size=1em]180

[size=1em]181

[size=1em]182

[size=1em]183

[size=1em]184

[size=1em]185

[size=1em]186

[size=1em]187

[size=1em]188

[size=1em]189

[size=1em]190

[size=1em]191

[size=1em]192

[size=1em]193

[size=1em][size=1em]package com.android.game;

[size=1em]import java.util.ArrayList;
[size=1em]import java.util.List;

[size=1em]import android.app.Activity;
[size=1em]import android.content.Context;
[size=1em]import android.content.Intent;
[size=1em]import android.content.pm.PackageInfo;
[size=1em]import android.content.pm.PackageManager;
[size=1em]import android.graphics.drawable.Drawable;
[size=1em]import android.os.Bundle;
[size=1em]import android.view.LayoutInflater;
[size=1em]import android.view.View;
[size=1em]import android.view.ViewGroup;
[size=1em]import android.widget.AdapterView;
[size=1em]import android.widget.BaseAdapter;
[size=1em]import android.widget.GridView;
[size=1em]import android.widget.ImageView;
[size=1em]import android.widget.TextView;
[size=1em]import android.widget.AdapterView.OnItemClickListener;

[size=1em]public class Apps extends Activity {

[size=1em]    // 用来记录应用程序的信息
[size=1em]    List<AppsItemInfo> list;

[size=1em]    private GridView gridview;
[size=1em]    private PackageManager pManager;

[size=1em]    @Override
[size=1em]    protected void onCreate(Bundle savedInstanceState) {
[size=1em]        // TODO Auto-generated method stub
[size=1em]        super.onCreate(savedInstanceState);
[size=1em]        this.setContentView(R.layout.main);

[size=1em]        // 取得gridview
[size=1em]        gridview = (GridView) findViewById(R.id.gridview);

[size=1em]        // 获取图片、应用名、包名
[size=1em]        pManager = Apps.this.getPackageManager();
[size=1em]        List<ackageInfo> appList = getAllApps(Apps.this);

[size=1em]        list = new ArrayList<AppsItemInfo>();

[size=1em]        for (int i = 0; i < appList.size(); i++) {
[size=1em]            PackageInfo pinfo = appList.get(i);
[size=1em]            AppsItemInfo shareItem = new AppsItemInfo();
[size=1em]            // 设置图片
[size=1em]            shareItem.setIcon(pManager
[size=1em]                    .getApplicationIcon(pinfo.applicationInfo));
[size=1em]            // 设置应用程序名字
[size=1em]            shareItem.setLabel(pManager.getApplicationLabel(
[size=1em]                    pinfo.applicationInfo).toString());
[size=1em]            // 设置应用程序的包名
[size=1em]            shareItem.setPackageName(pinfo.applicationInfo.packageName);

[size=1em]            list.add(shareItem);

[size=1em]        }

[size=1em]        // 设置gridview的Adapter
[size=1em]        gridview.setAdapter(new baseAdapter());

[size=1em]        // 点击应用图标时,做出响应
[size=1em]        gridview.setOnItemClickListener(new ClickListener());

[size=1em]    }

[size=1em]    public static List<ackageInfo> getAllApps(Context context) {

[size=1em]        List<ackageInfo> apps = new ArrayList<ackageInfo>();
[size=1em]        PackageManager pManager = context.getPackageManager();
[size=1em]        // 获取手机内所有应用
[size=1em]        List<ackageInfo> packlist = pManager.getInstalledPackages(0);
[size=1em]        for (int i = 0; i < packlist.size(); i++) {
[size=1em]            PackageInfo pak = (PackageInfo) packlist.get(i);

[size=1em]            // 判断是否为非系统预装的应用程序
[size=1em]            // 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加
[size=1em]            // if()里的值如果<=0则为自己装的程序,否则为系统工程自带
[size=1em]            if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
[size=1em]                // 添加自己已经安装的应用程序
[size=1em]                apps.add(pak);
[size=1em]            }

[size=1em]        }
[size=1em]        return apps;
[size=1em]    }

[size=1em]    private class baseAdapter extends BaseAdapter {
[size=1em]        LayoutInflater inflater = LayoutInflater.from(Apps.this);

[size=1em]        @Override
[size=1em]        public int getCount() {
[size=1em]            // TODO Auto-generated method stub
[size=1em]            return list.size();
[size=1em]        }

[size=1em]        @Override
[size=1em]        public Object getItem(int position) {
[size=1em]            // TODO Auto-generated method stub
[size=1em]            return null;
[size=1em]        }

[size=1em]        @Override
[size=1em]        public long getItemId(int position) {
[size=1em]            // TODO Auto-generated method stub
[size=1em]            return position;
[size=1em]        }

[size=1em]        @Override
[size=1em]        public View getView(int position, View convertView, ViewGroup parent) {
[size=1em]            // TODO Auto-generated method stub
[size=1em]            ViewHolder holder;
[size=1em]            if (convertView == null) {
[size=1em]                // 使用View的对象itemView与R.layout.item关联
[size=1em]                convertView = inflater.inflate(R.layout.apps, null);
[size=1em]                holder = new ViewHolder();
[size=1em]                holder.icon = (ImageView) convertView
[size=1em]                        .findViewById(R.id.apps_image);
[size=1em]                holder.label = (TextView) convertView
[size=1em]                        .findViewById(R.id.apps_textview);
[size=1em]                convertView.setTag(holder);
[size=1em]            } else {
[size=1em]                holder = (ViewHolder) convertView.getTag();
[size=1em]            }

[size=1em]            holder.icon.setImageDrawable(list.get(position).getIcon());
[size=1em]            holder.label.setText(list.get(position).getLabel().toString());

[size=1em]            return convertView;

[size=1em]        }

[size=1em]    }

[size=1em]    // 当用户点击应用程序图标时,将对这个类做出响应
[size=1em]    private class ClickListener implements OnItemClickListener {

[size=1em]        @Override
[size=1em]        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
[size=1em]                long arg3) {

[size=1em]            // 将应用所选的应用程序信息共享到Application中
[size=1em]            MyApp appState = ((MyApp) getApplicationContext());
[size=1em]            // 获取当前所在选项卡
[size=1em]            String tab_id = appState.getTab_id();
[size=1em]            // 设置所选应用程序信息
[size=1em]            appState.set_AppInfo(tab_id, list.get(arg2).getLabel(), list.get(
[size=1em]                    arg2).getIcon(), list.get(arg2).getPackageName());      
[size=1em]            Intent intent = new Intent(Apps.this, Game.class);
[size=1em]            startActivity(intent);
[size=1em]            // 销毁当前Activity
[size=1em]            finish();
[size=1em]        }

[size=1em]    }

[size=1em]    // 自定义一个 AppsItemInfo 类,用来存储应用程序的相关信息
[size=1em]    private class AppsItemInfo {

[size=1em]        private Drawable icon; // 存放图片
[size=1em]        private String label; // 存放应用程序名
[size=1em]        private String packageName; // 存放应用程序包名

[size=1em]        public Drawable getIcon() {
[size=1em]            return icon;
[size=1em]        }

[size=1em]        public void setIcon(Drawable icon) {
[size=1em]            this.icon = icon;
[size=1em]        }

[size=1em]        public String getLabel() {
[size=1em]            return label;
[size=1em]        }

[size=1em]        public void setLabel(String label) {
[size=1em]            this.label = label;
[size=1em]        }

[size=1em]        public String getPackageName() {
[size=1em]            return packageName;
[size=1em]        }

[size=1em]        public void setPackageName(String packageName) {
[size=1em]            this.packageName = packageName;
[size=1em]        }

[size=1em]    }

[size=1em]}




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表