Получить UID приложения из списка приложений

1
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView internetapps= (ListView) findViewById(R.id.list);
    ArrayList myList = new ArrayList();
    PackageManager pm = this.getPackageManager();

    List<PackageInfo> applist= pm.getInstalledPackages(0);

    Iterator<PackageInfo> it= applist.iterator();

    while (it.hasNext()){
        PackageInfo pk= (PackageInfo)it.next();

        if(PackageManager.PERMISSION_GRANTED==(pm.checkPermission(Manifest.permission.INTERNET, pk.packageName))) //checking if the package is having INTERNET permission
        {
        myList.add(""+pk.applicationInfo.loadLabel(pm));
        }

    }

    internetapps.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, myList));
    final TextView text1 = (TextView) findViewById(R.id.text2);

    internetapps.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> parent, View arg1, int list_position,long app_Uid) 
        {

            String app_selected=parent.getItemAtPosition(list_position).toString();

            final PackageManager pm = getPackageManager();
            //get a list of installed apps.
            List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
            long 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;
                    text1.setText("Yeah");

                }
                else {
                    text1.setText("No");
                }

            }

        }
    });

}

Как получить uid приложения из приложения в списке. Я пытаюсь получить uid, используя приведенный выше код, но он всегда показывает отрицательный результат (я использую setText для отслеживания кода, в котором он запускается, если..else... он всегда показывает "Нет" после того, как я нажму на элемент), Что-то не так с моим кодом.

Теги:

1 ответ

2

Это НЕ хороший способ отладить это, вы должны использовать журналы. Идентификатор, который будет возвращен, будет идентификатором приложения. Ваша логика должна следовать этому предположению. Убедитесь, что вы фундаментально получаете все, что вам нужно. Там я ничего плохого в API, это скорее ошибка пользователя.

Также использование API бесполезно, если вы не понимаете, что должно быть возвращено. ПРОЧИТАЙТЕ документацию.

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

getInstalledApplications (int flags) getInstalledPackages (int flags)

Прочитайте документацию, чтобы узнать, для чего используются флаги, и действительные значения. Ваше предположение об отправке 0 в агенты вашего getInstalledPackages не сопоставимо ни с чем в процессе документирования. Это, конечно, проблема.

И мой последний совет, вместо того, чтобы считать ваши ценности правильными, проверьте, что сравнивается. Будьте параноидальными при тестировании кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню