如何从一个微调框中显示的列表中获取android应用程序的uid值?

我正在开发一个小应用程序,显示已安装的应用程序作为一个微调列表中。 只有应用程序名称显示为微调器值。 每当我从微调select一个应用程序,我需要检索所选应用程序的UID。 我怎样才能实现这个function?

以下是我从代码中获取应用程序名称的代码

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类获取应用程序的名称。

Solutions Collecting From Web of "如何从一个微调框中显示的列表中获取android应用程序的uid值?"

您将需要使用PackageManager来获取有关在列表中select的任何应用程序的包信息。 我还没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以便您可以尝试将其与所选内容进行匹配。

希望这指出你在正确的方向,并帮助你。 祝你好运。

你应该能够按照这里列出的例子来适应你的情况。 这应该比每次都要循环遍历包更清洁:

如何将对象绑定到微调器的示例。