zoukankan      html  css  js  c++  java
  • android 获取第三方应用程序包名并启动

    效果图:




    说明:

    第一行:应用程序名称

    第二行:应用程序包名

    第三行:应用程序入口Activity名称


    代码如下:


    package com.hello.project;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.ApplicationInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.graphics.drawable.Drawable;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.provider.Settings;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.AdapterView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    
    public class SoftActivity extends Activity implements Runnable ,OnItemClickListener{
    	
    	private List<Map<String, Object>> list = null;
    	private ListView softlist = null;
    	private ProgressDialog pd;
    	private Context mContext;
    	private PackageManager mPackageManager;
    	private List<ResolveInfo> mAllApps;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		setContentView(R.layout.software);
    		setTitle("文件管理器");
    		
    		mContext = this;
        	mPackageManager = getPackageManager();
        	
    		softlist = (ListView) findViewById(R.id.softlist);
    
    		 pd = ProgressDialog.show(this, "请稍候..", "正在收集软件信息...", true,false);
    		 Thread thread = new Thread(this);
    	     thread.start();
    
    		super.onCreate(savedInstanceState);
    	}
    	/**
    	 * 检查系统应用程序,添加到应用列表中
    	 */
    	private void bindMsg(){
    		//应用过滤条件
        	Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
            mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        	mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);
        	softlist.setAdapter(new MyAdapter(mContext, mAllApps));
        	softlist.setOnItemClickListener(this);
        	//按报名排序
            Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));
            
    	}
    	
    	@Override
    	public void run() {
    		bindMsg();
    	    handler.sendEmptyMessage(0);
    
    	}
    	private Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                pd.dismiss();
            }
        };
        
        class MyAdapter extends BaseAdapter{
    
    		private Context context;
        	private List<ResolveInfo> resInfo;
        	private ResolveInfo res;
    		private LayoutInflater infater=null;   
        	
        	public MyAdapter(Context context, List<ResolveInfo> resInfo) {			
    			this.context = context;
    			this.resInfo = resInfo;
    			 infater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    		}
    
    		@Override
    		public int getCount() {
    			
    			return resInfo.size();
    		}
    
    		@Override
    		public Object getItem(int arg0) {
    			
    			return arg0;
    		}
    
    		@Override
    		public long getItemId(int position) {
    			
    			return position;
    		}
    
    		@Override
    		public View getView(int position, View convertView, ViewGroup parent) {
    			
    		//	View view = null;  
    	        ViewHolder holder = null;  
    	        if (convertView == null || convertView.getTag() == null) {  
    	        	convertView = infater.inflate(R.layout.soft_row, null);  
    	            holder = new ViewHolder(convertView);  
    	            convertView.setTag(holder);  
    	        }   
    	        else{  
    	       //     view = convertView ;  
    	            holder = (ViewHolder) convertView.getTag() ;  
    	        }  
    	        //获取应用程序包名,程序名称,程序图标
    	        res = resInfo.get(position);
    	        holder.appIcon.setImageDrawable(res.loadIcon(mPackageManager));  
    	        holder.tvAppLabel.setText(res.loadLabel(mPackageManager).toString());
    	        holder.tvPkgName.setText(res.activityInfo.packageName+'\n'+res.activityInfo.name);
    			return convertView;
    			
    			/*convertView = LayoutInflater.from(context).inflate(R.layout.soft_row, null);
    					
    			app_icon = (ImageView)convertView.findViewById(R.id.img);
    			app_tilte = (TextView)convertView.findViewById(R.id.name);
    			app_des = (TextView)convertView.findViewById(R.id.desc);
    
    			res = resInfo.get(position);
    			app_icon.setImageDrawable(res.loadIcon(mPackageManager));
    			app_tilte.setText(res.loadLabel(mPackageManager).toString());
    			app_des.setText(res.activityInfo.packageName+'\n'+res.activityInfo.name);
    
    			return convertView;*/
    		}
        }
        //设定界面布局
        class ViewHolder {  
            ImageView appIcon;  
            TextView tvAppLabel;  
            TextView tvPkgName;  
      
            public ViewHolder(View view) {  
                this.appIcon = (ImageView) view.findViewById(R.id.img);  
                this.tvAppLabel = (TextView) view.findViewById(R.id.name);  
                this.tvPkgName = (TextView) view.findViewById(R.id.desc);  
            }  
        }  
        /**
         * 单击应用程序后进入系统应用管理界面
         */
    	@Override
    	public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    		
    		ResolveInfo res = mAllApps.get(position);
    		//该应用的包名和主Activity
    		String pkg = res.activityInfo.packageName;
    		String cls = res.activityInfo.name;
    		
    		ComponentName componet = new ComponentName(pkg, cls);
    		
    		Intent i = new Intent();
    		i.setComponent(componet);
    		startActivity(i);
    		
    	}
    
    }
    

    software.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="vertical" android:layout_width="fill_parent"
    	android:layout_height="fill_parent">
    
    	<ListView 
    	    android:layout_width="fill_parent"
    		android:layout_height="fill_parent" 
    		android:drawSelectorOnTop="false"
    		android:id="@+id/softlist" />
    		
    </LinearLayout>

    soft_row.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/vw1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">    
    
        <ImageView android:id="@+id/img"
            android:layout_width="32dip"
            android:layout_margin="4dip"
            android:layout_height="32dip"/>
     
       <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <TextView android:id="@+id/name"
                android:textSize="18sp"
                android:textStyle="bold"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"/>
    
            <TextView android:id="@+id/desc"
                android:textSize="14sp"
                android:layout_width="fill_parent"
                android:paddingLeft="10dip"
                android:layout_height="wrap_content"/>
    
        </LinearLayout>
    
    </LinearLayout>

    最后别忘了添加权限:

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    	<uses-permission android:name="android.permission.GET_TASKS"/>




  • 相关阅读:
    Boost练习程序(强制转换)
    4873279(1002)
    A+B Problem(1000)
    STL练习程序(去除相同元素)
    Boost练习程序(智能指针)
    Sql技巧总结
    MySql Show Status详解
    mysql show status调优
    mysql decimal、numeric数据类型
    Apache Thrift学习小记
  • 原文地址:https://www.cnblogs.com/happyxiaoyu02/p/6818962.html
Copyright © 2011-2022 走看看