Как потянуть Список установленного названия Приложения, имени пакета и drawable символа

Я пытаюсь выяснить, как я могу осуществить этот код в свой существующий исходный код. В настоящее время у меня есть некоторый источник, который показывает представление списка на все установленные приложения и на щелчке пошлет намерение в применение. Мне нужна некоторая поддержка о том, как потянуть символ и добавить это в представление списка.

Любая помощь, редактирование исходного кода, связи, и т.д. помогла бы мне решить это.

Спасибо

ListInstalledActivitiesActivity

public class ListInstalledActivitiesActivity extends ListActivity {

   //Buffer used to store package and class information, and also determine the number of installed activities
    private ArrayList _activitiesBuffer = null;

   //Buffers for package and class information
    private String[] _packages = null;
    private String[] _classes = null;

   //Index used to fill buffers
    private int _index = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main3);
       //Get all installed activities (package and class information for every activity)
        getAllInstalledActivities();              

       //Set content to GUI
        setListAdapter(new ArrayAdapter(this, R.layout.list_item, _classes));

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);

       //Add listener
        lv.setOnItemClickListener(new OnItemClickListener() {

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

               //When clicked, show a toast with the selected activity
                Toast.makeText(
                    getApplicationContext(), 
                    ((TextView) view).getText(), 
                    Toast.LENGTH_SHORT).show();

               //When clicked, start selected activity, if allowed or possible
                try {

                    Intent intent = new Intent().setClassName(
                            _packages[position],//package 
                            _classes[position]);//class
                    startActivity(intent);

                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(), "Unable to start selected application.", Toast.LENGTH_SHORT);
                }

          }//public void onItemClick(AdapterView<?> parent, View view, int position, long id)

        });

    }//public void onCreate(Bundle savedInstanceState)

    /*
     * Get all installed activities
     */
    private void getAllInstalledActivities() {


       //Initialize activities buffer
        _activitiesBuffer = new ArrayList();

        final Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        final List pkgAppsList = getPackageManager().queryIntentActivities( intent, 0);

        Iterator iterator1 = pkgAppsList.iterator();
        while (iterator1.hasNext()) {

            ResolveInfo resolveInfo = iterator1.next();

            String[] buf = new String[] {
                    resolveInfo.activityInfo.packageName, 
                    resolveInfo.activityInfo.name};

            _activitiesBuffer.add(buf);

        }//while (iterator1.hasNext())

        _packages = new String[_activitiesBuffer.size()];
        _classes = new String[_activitiesBuffer.size()];

        Iterator iterator2 = _activitiesBuffer.iterator();
        while (iterator2.hasNext()) {

            String[] buf = iterator2.next();

           //Store package information
            _packages[_index] = buf[0]; 

           //Store class information
            _classes[_index] = buf[1];

            _index++;

        }//while (iterator2.hasNext())

    }//private void getAllInstalledActivities()

      }

main3.xml

 

     

      <!-- 
3
добавлено отредактировано
Просмотры: 1
de
необходимо будет создать пользовательский адаптер, расширяя BaseAdapter для осуществления второго варианта, посмотрите это которые помогают вам больше для решения текущей проблемы
добавлено автор ρяσѕρєя K, источник

2 ответы

Чтобы принести имена и символы установленных приложений, необходимо использовать класс Диспетчера пакетов, вот отрывок кода, который позволит вам принести название и символы заявления

   import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class FetchApplicationsActivity extends Activity {

    TextView data;
    ImageView image1;
    LinearLayout holdlayout;
    View l1;
    private ArrayList results;
    List list;
    TextView result;
    String str = "";
    Drawable icon;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        l1 = findViewById(R.id.Layout1);
        results = new ArrayList();
        PackageManager pm = this.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        list = pm.queryIntentActivities(intent,
                PackageManager.PERMISSION_GRANTED);
        for (ResolveInfo rInfo : list) {
            str = rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()
                    + "\n";
            results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm)
                    .toString());
            Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
                    .loadLabel(pm).toString());
            icon = rInfo.activityInfo.applicationInfo.loadIcon(pm);
            holdlayout = new LinearLayout(getApplicationContext());
            holdlayout.setOrientation(LinearLayout.HORIZONTAL);
            data = new TextView(getApplicationContext());
            data.setText(str);
            image1 = new ImageView(getApplicationContext());
            image1.setBackgroundDrawable(icon);
            ((ViewGroup) holdlayout).addView(image1);
            ((ViewGroup) holdlayout).addView(data);
            ((ViewGroup) l1).addView(holdlayout);

        }
    }
}

Edit- You can define your main.xml as,

?xml version="1.0" encoding="utf-8"?>




    


        



    
    


Здесь я создал динамичный textviews , Imageviews и расположения , чтобы показать имена и символы. Можно создать собственный настроенный список, чтобы показать это.

Edit2- Here is a good link on how to create customized list and also look here. I think these will solve the issue.

3
добавлено
Огромное спасибо за исходный код я действительно ценю ответ. Теперь будучи ранним в развитие андроида, как я начал бы делать свой код exsisting обновленным с включенный. Я вижу, что вы имеете, кодируют представление с id Layout1, делают я должен изменить свой main3.xml id на Layout1, жаль задавать очень простые вопросы, ценить поддержку
добавлено автор Jaison Brooks, источник
Я пытаюсь отредактировать свой код, чтобы заставить его работать, Был бы вы рекомендовать держать любой мой текущий код. Или если я начинаю с кода, вы поставляли
добавлено автор Jaison Brooks, источник
в состоянии вы, чтобы отредактировать мой текущий код вообще, раз так вы могли включить тот код в текущую установку, если не плохой scap это и начинается с кода, вы обеспечили. Еще раз спасибо
добавлено автор Jaison Brooks, источник
плохо создайте новый проект, сделайте я просто ввожусь ваш код после того, как я установил довольное представление, поскольку я заявил, что я плохо знаком с программированием андроида и Явы, таким образом, я хочу гарантировать, что я собираюсь на самом деле быть в состоянии заставить этот код работать в какой-то момент. Еще раз спасибо
добавлено автор Jaison Brooks, источник
Это работает!!!! Спасибо, Таким образом, это загружает символы и название заявления, Теперь что я хотел бы сделать, добавляет та же самая функциональность, как я имел прежде так, чтобы onClick пункта (приложение) это было намерение к тому применению. как я имею в своем предыдущем коде. Огромное спасибо за помощь мне
добавлено автор Jaison Brooks, источник
я понимаю фундаментальное понятие на listviews и что не, Был бы любой мой существующий исходный код быть salvageable, чтобы сделать его кодом, вы предоставили в основном напряжению имя пакета или безотносительно и посылаете намерение в него по щелчку listview пункта.
добавлено автор Jaison Brooks, источник
Никакая проблема, сделайте вы возражаете посылать мне по электронной почте, и я могу делать попытку к построенному этого настроенного списка, и вы могли забыть, что он для меня кидает мне письмо [email protected]
добавлено автор Jaison Brooks, источник
плохо проверьте связи и посмотрите то, что я могу сделать и обновить свой исходный код на этой странице и прокомментировать вас назад когда i' ve обновил его. Еще раз спасибо я действительно ценю это
добавлено автор Jaison Brooks, источник
Я отредактировал свой ответ, чтобы показать то, что вы могли написать в main3.xml
добавлено автор Sahil Mahajan Mj, источник
вы могли создать новый проект и проверить, работает ли мой код, и затем войдите в него.
добавлено автор Sahil Mahajan Mj, источник
здесь вам будет нужен Настроенный список , это отличается от простого списка, затем в onClick() событие списка передают намерение, которое вы использовали в своем вопросе. надо надеяться, это будет работать.
добавлено автор Sahil Mahajan Mj, источник
Я отредактировал свой ответ. Можно взглянуть на те связи. сообщите мне, когда ваша проблема будет решена.
добавлено автор Sahil Mahajan Mj, источник

Я следую за этой обучающей программой и его очень полезным мне:

Получают установленные Приложения с Именем, Именем Пакета, Версией и Символом

class PInfo {
    private String appname = "";
    private String pname = "";
    private String versionName = "";
    private int versionCode = 0;
    private Drawable icon;
    private void prettyPrint() {
        Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
    }
}

private ArrayList getPackages() {
    ArrayList apps = getInstalledApps(false); /* false = no system packages */
    final int max = apps.size();
    for (int i=0; i getInstalledApps(boolean getSysPackages) {
    ArrayList res = new ArrayList();        
    List packs = getPackageManager().getInstalledPackages(0);
    for(int i=0;i
1
добавлено