1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

[HILFE] Installierte Apps auflisten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Denny, 13.10.2010.

  1. Denny, 13.10.2010 #1
    Denny

    Denny Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2010
    [FONT=&quot]Hi,

    Ich würde gerne alle installierten Apps in einer ListView anzeigen lassen, sollte vom Aufbau aTrackDog ähneln...[/FONT]


    [​IMG]

    [FONT=&quot]Leider bekomm ich das irgendwie nicht hin :-(

    Könnte jemand vielleicht ein Beispiel posten???

    Danke[/FONT]
     
  2. swordi, 13.10.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wo ist dein problem?

    im aufbau einer liste oder beim abfragen nach den installierten apps?
     
  3. Fr4gg0r, 13.10.2010 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    oder beides^^
     
  4. Denny, 14.10.2010 #4
    Denny

    Denny Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2010
    Aufbau der liste...
     
  5. Fr4gg0r, 14.10.2010 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    RelativeLayout...
    ImageView mit fester Größe (denn apps können auch icons mit 100*100 haben -.-), dann 2 TextViews rechts davon, und eins unter dem anderem. (rightOf und below)

    Zuletzt ein weiteres ImageView mit alignParentRight=true.

    Die Layoutfrage wäre damit schonmal geklärt.
    Google mal List14.java.
    Da siehste wie man Listviews mit hoher Performance erstellt.
    Du musst dann nur noch den ViewHolder die nötigen Attribute geben (2 ImageViews, 2 TextViews) und in die getView Methode anpassen. ;)
     
  6. Denny, 17.10.2010 #6
    Denny

    Denny Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2010
    Bisher habe ich:

    Code:
    
    package com.xxx_listapps;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.ListActivity;
    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    
    public class MainActivity extends ListActivity {
    
        int NumOfArry = 0;
        static int iAlleParkete;
    
        private static class EfficientAdapter extends BaseAdapter {
            private LayoutInflater mInflater;
            private Bitmap mIcon1;
            private Bitmap mIcon2;
    
            public EfficientAdapter(Context context) {
                // Cache the LayoutInflate to avoid asking for a new one each time.
                mInflater = LayoutInflater.from(context);
    
                // Icons bound to the rows.
                mIcon1 = BitmapFactory.decodeResource(context.getResources(),
                        R.drawable.icon48x48_1);
                mIcon2 = BitmapFactory.decodeResource(context.getResources(),
                        R.drawable.icon48x48_1);
            }
    
            public int getCount() {
                return AppNameString.length;
            }
    
    
            public Object getItem(int position) {
                return position;
            }
    
    
            public long getItemId(int position) {
                return position;
            }
    
    
            public View getView(int position, View convertView, ViewGroup parent) {
    
                ViewHolder holder;
    
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.list_item_icon_text,
                            null);
    
                    holder = new ViewHolder();
                    holder.text = (TextView) convertView.findViewById(R.id.text);
                    holder.icon = (ImageView) convertView.findViewById(R.id.icon);
    
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder) convertView.getTag();
                }
    
                holder.text.setText(AppNameString[position]);
                holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
    
                return convertView;
            }
    
            static class ViewHolder {
                TextView text;
                ImageView icon;
            }
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setListAdapter(new EfficientAdapter(this));
    
            listPackages();
        }
        public static  String[] AllAppNames = new String[999];
        
    
        private void listPackages() {
            ArrayList<PInfo> apps = getInstalledApps(false);
            
            final int max = apps.size();
            for (int i = 0; i < max; i++) {
                apps.get(i).prettyPrint();
            }
        }
    
        private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
            ArrayList<PInfo> res = new ArrayList<PInfo>();
            List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    
            for (int i = 0; i < packs.size(); i++) {
                PackageInfo p = packs.get(i);
                if ((!getSysPackages) && (p.versionName == null)) {
                    continue;
                }
    
                String AppName = p.applicationInfo.loadLabel(getPackageManager())
                        .toString();
    
                AllAppNames[NumOfArry] = new String(AppName);
                NumOfArry = NumOfArry + 1;
    
            }
            return res;
        }
    }
    
    
    
    Es gibt leider 2 Probleme, woher weis ich wie lang mein Arry sein muss, und wie kann ich die Icons auslesen...??

    Danke
     
  7. Fr4gg0r, 17.10.2010 #7
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    static int iAlleParkete; :D
     
  8. Denny, 17.10.2010 #8
    Denny

    Denny Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2010
    Hast du auch ne Antwort die mir weiterhilft???

    :p

    PS: Laut Eclipse muss es static sein, da auch das Array static ist...
     
    Zuletzt bearbeitet: 17.10.2010
  9. Fr4gg0r, 17.10.2010 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    ja arraylist statt array benutzen^^

    Icons von apps bekommst über den PackageManager mit getApplicationIcon(packageName) oder einer von den ähnlichen methoden.
     
    Zuletzt bearbeitet: 17.10.2010

Diese Seite empfehlen