Как получить значение 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
так что вы можете попытаться сопоставить его с тем, что было выбрано.
надеюсь, что это направит вас в правильном направлении и поможет вам. Удачи.
Вы должны быть в состоянии следовать приведенному здесь примеру и адаптировать его к вашей ситуации. Это должно быть чище, чем каждый раз проходить через пакеты: