主界面获取第三方app,或获取系统自带app ,以及过滤某app 和大家一起分享下,(*^__^*) 嘻嘻……

获取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~



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值