我之前已经在Stackoverflow和Google上搜索了但我找不到任何对我有用的答案,因为我在使用它时遇到错误或者某些代码/部分缺失或者可能需要安装其他库文件。
所以基本上我想做的是检索Android手机中所有已安装的应用程序并显示出来,但我不知道如何去做。我经常遇到关于“context”变量的错误,或者我的xml文件以某种方式与.java文件不匹配。
为了达到检索所有Android应用程序的目的,是否有人能够为我提供所有必需文件的源代码(例如xml,java,manifest,drawable,layout等)?非常感谢帮助
答案 0 :(得分:0)
public class AppList extends Activity {
private ListView lView;
private ArrayList results = new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lView = (ListView) findViewById(R.id.list1);
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> 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));
}
}
答案 1 :(得分:0)
首先创建main.xml文件,如下所示,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
此list
将用于填充已安装的应用程序
现在创建Activity类以获取已安装的应用程序
public class AppList extends Activity {
private ListView lView;
private ArrayList results;
List<ResolveInfo> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
results = new ArrayList();
lView = (ListView) findViewById(R.id.list1);
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));
}
}
编辑 - 如果要从列表中打开应用程序,请单击它。您必须覆盖ListView的onItemClick方法,并且在该方法中,您必须传递意图以打开所选应用程序。
看看这里,
这些很可能会解决您的问题。