How to get all homescreens in Android?

99封情书 提交于 2019-12-02 11:43:56
Rohit Goswami

first create a bean to store app info like this

public class Bean {

 String appName;
 String packName;
 Drawable icon;
 Date installTime;
 Date updateTime;
 int size;
}

now create four list here for ApplicationInfo,results,packname,bean.

public class AllApplications extends Activity  {

List<ApplicationInfo> AppList;
private ArrayList<String>results;
private ArrayList<String>packName;
public ArrayList<Bean> list;
ProgressDialog progress;
ActivityManager am ;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_applications);


    try 
    {
        new LoadApps().execute();
    } 
    catch (Exception e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.e("Exception",e.toString());
    }

}


class LoadApps extends AsyncTask<Void, Void,String>
{

    @Override 
    protected void onPreExecute() { 
        progress= ProgressDialog.show(AllApplications.this,"Loading",
                "Please Wait");
    } 
    @Override
    protected String doInBackground(Void... params) 
    {
        PackageManager pm = AllApplications.this.getPackageManager();
        list = new ArrayList<Bean>();
        AppList = new ArrayList<ApplicationInfo>();
        AppList = pm.getInstalledApplications(0);
        Log.e("Package info",""+AppList);
        results = new ArrayList<String>();
        packName = new ArrayList<String>();
        Log.e("Total package list",""+AppList.size());

        for(int i=0;i<AppList.size();i++)
        {
            Bean bean = new Bean();
            ApplicationInfo appInfo  = AppList.get(i); 
            try 
            {
                PackageInfo packInfo = pm.getPackageInfo(appInfo.packageName,0);
                try 
                {
                    java.lang.reflect.Field field1 = PackageInfo.class.getField("firstInstallTime");
                    long firstIns = field1.getLong(packInfo);
                    Date insDate = new Date(firstIns);
                    bean.installTime = insDate;
                    java.lang.reflect.Field field2 = PackageInfo.class.getField("lastUpdateTime");
                    long lastUpdate = field2.getLong(packInfo);
                    Date upDate = new Date(lastUpdate);
                    bean.updateTime = upDate;

                } 
                catch (NoSuchFieldException e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            } 
            catch (NameNotFoundException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Log.e("ins package", "" + appInfo.packageName);
            Log.e("ins package name", "" +appInfo.loadLabel(pm));
            Log.e("launched activity :", "" + pm.getLaunchIntentForPackage(appInfo.packageName)); 
            bean.appName = (String) appInfo.loadLabel(pm);
            bean.packName = appInfo.packageName;
            bean.icon = appInfo.loadIcon(getPackageManager());
            list.add(bean);
            //              PackageInfo. this.firstInstallTime(a);
        }

        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        progress.dismiss();

    }

}}

Try this it ll help you alot,and let me know for more help.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!