Как получить значение UID приложения для Android из списка, отображаемого в счетчике?

Я занимаюсь разработкой небольшого приложения, которое отображает установленное приложение в виде списка в счетчике. В качестве значений счетчика отображается только имя приложения. Всякий раз, когда я выбираю приложение из счетчика, мне нужно получить UID выбранного приложения. Как я могу реализовать функцию?

Ниже приведен мой код для получения имени приложения от счетчика

appspinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View arg1,
                int app_pos, long app_id) {
            // TODO Auto-generated method stub
            String app_selected=parent.getItemAtPosition(app_pos).toString();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            return;
        }
    });

Установленное приложение хранится в списке с использованием класса PackageManager и с использованием класса PackageInfo. Я получаю название приложения.

2 ответа

Решение

Вам нужно будет использовать PackageManager чтобы получить информацию о пакете обо всем приложении, которое вы выберете в списке. Я не сделал это с Spinner но я уверен, что это должно работать так же, как в моем ListView,

appspinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View arg1,
                int app_pos, long app_id) {
        // TODO Auto-generated method stub
        String app_selected=parent.getItemAtPosition(app_pos).toString();

        final PackageManager pm = getPackageManager();
        //get a list of installed apps.
        List<ApplicationInfo> packages = pm.getInstalledApplications(
                PackageManager.GET_META_DATA);
        int UID;
        //loop through the list of installed packages and see if the selected
        //app is in the list
        for (ApplicationInfo packageInfo : packages) {
            if(packageInfo.packageName.equals(app_selected)){
                //get the UID for the selected app
                UID = packageInfo.uid;
                break; //found a match, don't need to search anymore
            }

        }

        //Do whatever with the UID
        Log.i("Check UID", "UID is: " + UID);               

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
        return;
    }
});

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

надеюсь, что это направит вас в правильном направлении и поможет вам. Удачи.

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

Пример того, как привязать объект к спиннеру.

Другие вопросы по тегам