Help Find the path of the App installed by the user

0

What I want to achieve is to get the path of an app that is displayed in listView by a click, but I can not find a way to make it happen if someone knows please help. My code is this my current code: The main activity code:

ListView apps;
 PackageManager packageManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        apps = (ListView) findViewById(R.id.listView1);
        packageManager = getPackageManager();
  final List <PackageInfo> packageList = packageManager
    .getInstalledPackages(PackageManager.GET_META_DATA); // all apps in the phone
  final List <PackageInfo> packageList1 = packageManager
    .getInstalledPackages(0);

    try {
      packageList1.clear();
      for (int n = 0; n < packageList.size(); n++) 
      {

       PackageInfo PackInfo = packageList.get(n);
       if (((PackInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true) 
        //check weather it is system app or user installed app
       {
        try
        {

          packageList1.add(packageList.get(n)); // add in 2nd list if it is user installed app 
           Collections.sort(packageList1,new Comparator <PackageInfo >() 
             // this will sort App list on the basis of app name
           {
            public int compare(PackageInfo o1,PackageInfo o2) 
            {
             return o1.applicationInfo.loadLabel(getPackageManager()).toString()
               .compareToIgnoreCase(o2.applicationInfo.loadLabel(getPackageManager())
                   .toString());// compare and return sorted packagelist.
            }
           });


        } catch (NullPointerException e) {
         e.printStackTrace();
        }
       }
      }
     } catch (Exception e) {
      e.printStackTrace();
     }
    Listadapter Adapter = new Listadapter(this,packageList1, packageManager);
    apps.setAdapter(Adapter);
    apps.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            String abd=PackageManager.FEATURE_LOCATION;

            // TODO Auto-generated method stub

        }
    });

    }
}
'


y de la lista adapter es:' List <PackageInfo> packageList;
 Activity context;
 PackageManager packageManager;


 public Listadapter(Activity context, List <PackageInfo> packageList,
   PackageManager packageManager) {
  super();
  this.context = context;
  this.packageList = packageList;
  this.packageManager = packageManager;

 }

 private class ViewHolder {
  TextView apkName;
 }

 public int getCount() {
  return packageList.size();
 }

 public Object getItem(int position) {
  return packageList.get(position);
 }

 public long getItemId(int position) {
  return 0;
 }

 @Override
 public View getView(final int position, View convertView, ViewGroup parent) {
  final ViewHolder holder;

  LayoutInflater inflater = context.getLayoutInflater();

  if (convertView == null) {
   convertView = inflater.inflate(R.layout.list_item, null);
   holder = new ViewHolder();

   holder.apkName = (TextView) convertView
     .findViewById(R.id.textView1);

   convertView.setTag(holder);

  } else {

   holder = (ViewHolder) convertView.getTag();
  }

  PackageInfo packageInfo = (PackageInfo) getItem(position);
  String ruta=packageInfo.applicationInfo.sourceDir;
  Drawable appIcon = packageManager
    .getApplicationIcon(packageInfo.applicationInfo);
  String appName = packageManager.getApplicationLabel(
    packageInfo.applicationInfo).toString();
  appIcon.setBounds(0, 0, 40, 40);
  holder.apkName.setCompoundDrawables(appIcon, null, null, null);
  holder.apkName.setCompoundDrawablePadding(15);
  holder.apkName.setText(appName);

  return convertView;

 }


}

If you know how to achieve it, I would appreciate it.

    
asked by PowerApp 12.10.2016 в 21:53
source

0 answers