android 获取手机包名显示

来源:互联网 发布:渡口网络破产 编辑:程序博客网 时间:2024/06/04 19:44

功能:主要是获取手机所有应用的包名并显示。

实现代码:1、FindApk.java

package wind.com.findapk;        import android.app.Activity;        import android.content.Context;        import android.content.Intent;        import android.content.pm.PackageInfo;        import android.content.pm.PackageManager;        import android.graphics.drawable.Drawable;        import android.support.v7.app.AppCompatActivity;        import android.os.Bundle;        import android.view.LayoutInflater;        import android.view.View;        import android.view.ViewGroup;        import android.view.Window;        import android.widget.AdapterView;        import android.widget.BaseAdapter;        import android.widget.GridView;        import android.widget.ImageView;        import android.widget.TextView;        import java.util.ArrayList;        import java.util.List;public class FinkApk extends Activity {    List<AppsItemInfo> list;    private GridView gridView;    private PackageManager packageManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.main);        gridView = (GridView)findViewById(R.id.gridview);        packageManager = FinkApk.this.getPackageManager();        List<PackageInfo> appList = getAllApps(FinkApk.this);        list = new ArrayList<AppsItemInfo>();        for (int i=0; i< appList.size();i++){            PackageInfo packageInfo = appList.get(i);            AppsItemInfo shareItem = new AppsItemInfo();            shareItem.setIcon(packageManager.getApplicationIcon(packageInfo.applicationInfo));            shareItem.setLabel(packageManager.getApplicationLabel(packageInfo.applicationInfo).toString());            shareItem.setPackageName(packageInfo.applicationInfo.packageName);            list.add(shareItem);        }        gridView.setAdapter(new baseAdapter());        gridView.setOnItemClickListener(new ClickListener());    }    private class baseAdapter extends BaseAdapter {        LayoutInflater inflater = LayoutInflater.from(FinkApk.this);        @Override        public int getCount() {            // TODO Auto-generated method stub            return list.size();        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return null;        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            ViewHolder holder;            if (convertView == null) {                // 使用View的对象itemView与R.layout.item关联                convertView = inflater.inflate(R.layout.apps, null);                holder = new ViewHolder();                holder.icon = (ImageView) convertView.findViewById(R.id.apps_image);                holder.label = (TextView) convertView.findViewById(R.id.apps_textview);                convertView.setTag(holder);            } else {                holder = (ViewHolder) convertView.getTag();            }            holder.icon.setImageDrawable(list.get(position).getIcon());            holder.label.setText(list.get(position).getLabel().toString());            return convertView;        }    }    static class ViewHolder{        ImageView icon;        TextView label;    }    // 当用户点击应用程序图标时,将对这个类做出响应    private class ClickListener implements AdapterView.OnItemClickListener {        @Override        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,                                long arg3) {            PackageManager packageManager =FinkApk.this.getPackageManager();            String pName = list.get(arg2).getPackageName(); //获取包名            Intent intent = new Intent();            //获取intent            intent =packageManager.getLaunchIntentForPackage(pName);            startActivity(intent);        }    }    public static List<PackageInfo> getAllApps(Context context) {        List<PackageInfo> apps = new ArrayList<PackageInfo>();        PackageManager pManager = context.getPackageManager();        // 获取手机内所有应用        List<PackageInfo> packlist = pManager.getInstalledPackages(0);        for (int i = 0; i < packlist.size(); i++) {            PackageInfo pak = (PackageInfo) packlist.get(i);            // 判断是否为非系统预装的应用程序            // 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加            // if()里的值如果<=0则为自己装的程序,否则为系统工程自带            if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) > 0) {                // 添加自己已经安装的应用程序                apps.add(pak);            }        }        return apps;    }    public String className(String packagename){        String aa="";        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);        final PackageManager packageManager = getPackageManager();        List<ResolveInfo> apps = packageManager.queryIntentActivities(                mainIntent, 0);        for (int i = 0; i < apps.size(); i++) {            ResolveInfo info = apps.get(i);            Log.e("TAG", info.activityInfo.loadLabel(packageManager)                    + " pkgName "                    + info.activityInfo.applicationInfo.packageName + " className "                    + info.activityInfo.name);            if(packagename==info.activityInfo.applicationInfo.packageName)                aa = info.activityInfo.name;        }        return aa;    }}


2、appsItemInfo.java

package wind.com.findapk;import android.graphics.drawable.Drawable;public class AppsItemInfo{    private Drawable icon; // 存放图片    private String label; // 存放应用程序名    private String packageName; // 存放应用程序包名    public Drawable getIcon() {        return icon;    }    public void setIcon(Drawable icon) {        this.icon = icon;    }    public String getLabel() {        return label;    }    public void setLabel(String label) {        this.label = label;    }    public String getPackageName() {        return packageName;    }    public void setPackageName(String packageName) {        this.packageName = packageName;    }}
3、main.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:background="@drawable/wall"    android:layout_height="fill_parent"    >    <TextView        android:textSize="25sp"        android:gravity="center"        android:layout_marginTop="100dip"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="30dp"        android:text="@string/title"/>    <GridView xmlns:android="http://schemas.android.com/apk/res/android"        android:id="@+id/gridview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:numColumns="auto_fit"        android:verticalSpacing="10dp"        android:horizontalSpacing="10dp"        android:columnWidth="95dp"        android:stretchMode="columnWidth"        /></LinearLayout>
4、apps.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"    android:gravity="center" ><ImageViewandroid:id="@+id/apps_image"    android:layout_width="48dip"     android:layout_height="48dip"    android:icon="@drawable/ic_launcher" /><TextView    android:id="@+id/apps_textview"    android:layout_width="wrap_content"    android:layout_height="wrap_content"android:maxEms="6"android:lines="2"android:gravity="center"android:text="good" /></LinearLayout>
5、权限文件代码:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="wind.com.findapk"><!--android:theme="@android:style/Theme.Translucent" android:theme="@android:style/Theme.Dialog"-->    <application        android:allowBackup="true"        android:icon="@drawable/games"        android:label="@string/app_name"        android:theme="@style/Transparent"        android:launchMode="singleTask"        android:supportsRtl="true">        <activity android:name=".FinkApk">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>




0 0
原创粉丝点击