我创建了一个 AutoCompleteTextView,显示所有已安装的应用程序。
我还创建了一个Toast
(并将其实现为 onItemClickListener
),这将显示所选应用程序的 PackageName 。
如何从包管理器中检索包名称?请帮忙
final AutoCompleteTextView lView;
final ArrayList results;
List<ResolveInfo> list;
final String pname = "";
results = new ArrayList();
lView = (AutoCompleteTextView)this.findViewById(R.id.languages);
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) {
results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm)
.toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
}
lView.setAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1, results));
lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "PACKAGENAME", Toast.LENGTH_SHORT).show();
}
});
最佳答案
您将从 ResolveInfo 获取包裹信息.
您有列表列表;
因此,将您的 ItemClickListener
实现更改为此
lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String packageName = list.get(position).activityInfo.applicationInfo.packageName;
Toast.makeText(getApplicationContext(), packageName, Toast.LENGTH_SHORT).show();
}
});
关于java - 在 AutoCompleteTextView 中单击应用程序名称时显示包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934421/