获取app还好,就是过滤app,对于菜鸟的我,当时不会,也是博客了别人,才找到方法的,为了能给需要的人帮助下,解决烦恼,分享给大家,仅参考哦!
public class ApplicationActivity extends MutexActivity implements OnHKTouchListener {
private String TAG = "xxx.applicationActivity";
AppInfo mAppInfo;
private GridView gridView;
List<AppInfo> mArrayList;
private PackageManager mPackageManager;
AppAdapter mAppAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.hk_menu_app_list_gridview);
gridView = (GridView) findViewById(R.id.gridView_app);
mPackageManager = ApplicationActivity.this.getPackageManager();
List<PackageInfo> getAPPList = getAllApp(ApplicationActivity.this);
mArrayList = new ArrayList<AppInfo>();
for (int i = 0; i < getAPPList.size(); i++) {
PackageInfo info = getAPPList.get(i);
AppInfo mAppInfo = new AppInfo();
// 图片
mAppInfo.setAppIcon(mPackageManager.getApplicationIcon(info.applicationInfo));
// 名称
mAppInfo.setAppLabel(mPackageManager.getApplicationLabel(info.applicationInfo).toString());
// 包名
mAppInfo.setPackageName(info.applicationInfo.packageName);
mArrayList.add(mAppInfo);
}
gridView.setAdapter(new AppAdapter());
}
protected void onResume() {
super.onResume();
}
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(receiver);
}
private List<PackageInfo> getAllApp(Context context) {
List<PackageInfo> mPackageInfo = new ArrayList<PackageInfo>();
mPackageManager = context.getPackageManager();
List<PackageInfo> packageInfo_list = mPackageManager.getInstalledPackages(0);
for (int i = 0; i < packageInfo_list.size(); i++) {
PackageInfo packageInfo = packageInfo_list.get(i);
// 接下来开始过滤
//你的包名:com.xxx.xxx
//过滤掉不想显示在主界面的APP --则:continue
//只获取第三方应用的app,但是还想显示系统自带的某个app--则:mPackageInfo.add(packageInfo);
if (packageInfo.packageName.equals("com.xxx.xxx")) {
continue;
} else if (packageInfo.packageName.equals("com.xxx.xxx")) {
continue;
} else if (packageInfo.packageName.equals("com.xxx.xxx ")) {
continue;
}else if (packageInfo.packageName.equals("com.xxx.xxx")) {
mPackageInfo.add(packageInfo); // 获取系统自带的app
}
// 获取自己安装的第三方应用程序。反之要想获取系统自带app,条件更改为(packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_SYSTEM)> 0
if ((packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_SYSTEM) <= 0) {
mPackageInfo.add(packageInfo);
}
}
return mPackageInfo;
}
private class AppAdapter extends BaseAdapter {
LayoutInflater inflater;
public AppAdapter(){
inflater =LayoutInflater.from(ApplicationActivity.this);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mArrayList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mArrayList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mViewHolder = null;
if (convertView == null || convertView.getTag() !=null) {
// 使用View的对象itemView与R.layout.app关联
convertView = inflater.inflate(R.layout.bd_menu_app_list, parent,false);
mViewHolder = new ViewHolder();
mViewHolder.app_hkbuttom = (HKButtonText) convertView.findViewById(R.id.btn_app);
mViewHolder.app_names = (TextView) convertView.findViewById(R.id.app_names);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder) convertView.getTag();
}
mViewHolder.app_hkbuttom.SetIconUp(((BitmapDrawable)mArrayList.get(position).getAppIcon()).getBitmap());
mViewHolder.app_names.setText(mArrayList.get(position).getAppLabel().toString());
// 获取的APP触碰监听
mViewHolder.app_hkbuttom.setId(position);
mViewHolder.app_hkbuttom.SetHKTouchListener(ApplicationActivity.this);
return convertView;
}
}
// 触碰监听
public void OnHKTouchEvent(View view, TOUCH_ACTION action) {
int position = view.getId();
String pkname = mArrayList.get(position).getPackageName();
switch (action) {
case BTN_CLICKED:
Intent mIntent = new Intent();
mIntent = getPackageManager().getLaunchIntentForPackage(pkname);
Log.e(TAG, "view.getId():" + view.getId() + "arg1" + action + "packageName:" + pkname);
startActivity(mIntent);
break;
default:
break;
}
}
private class ViewHolder {
HKButtonText app_hkbuttom;
TextView app_names;
}
private class AppInfo {
private String appLabel; // app名称
private Drawable appIcon; // app图像
private String packageName; // 包名
public String getAppLabel() {
return appLabel;
}
public Drawable getAppIcon() {
return appIcon;
}
public String getPackageName() {
return packageName;
}
public void setAppLabel(String appLabel) {
this.appLabel = appLabel;
}
public void setAppIcon(Drawable appIcon) {
this.appIcon = appIcon;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
}
}
app_list.xml.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="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:layout_marginTop="16dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" >
<haoke.ui.util.HKButtonText
android:id="@+id/btn_app"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
app:btn_longdown_time="1000"
app:btn_pic_down="@drawable/pub_btn_down"
app:btn_pic_up="@drawable/pub_btn_up" >
</haoke.ui.util.HKButtonText>
<TextView
android:id="@+id/app_names"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="@dimen/pub_button_textsize"
android:padding="1dp"
android:layout_marginTop="16dp"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceLarge"
android:background="@drawable/pub_text_bg" />
</LinearLayout>
</LinearLayout>
gridView.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" >
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="4" >
</GridView>
</LinearLayout>
祝大家生活幸福快乐,笨笨哒,呵呵O(∩_∩)O~