通过PackageManager的api 查询已经安装的apk
我们写一个叫做loadApps的方法将活得的应用程序列表放到private List<ResolveInfo> mApps; 中,如下:
1
2
3
4
5
6
|
private
void
loadApps() {
Intent mainIntent =
new
Intent(Intent.ACTION_MAIN,
null
);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(mainIntent,
0
);
}
|
‘
package
org.bangchui.myhome;
import
java.util.List;
import
android.app.Activity;
import
android.content.Intent;
import
android.content.pm.ResolveInfo;
import
android.os.Bundle;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.BaseAdapter;
import
android.widget.GridView;
import
android.widget.ImageView;
public
class
MyHome
extends
Activity {
GridView mGrid;
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
loadApps();
setContentView(R.layout.main);
mGrid = (GridView) findViewById(R.id.apps_list);
mGrid.setAdapter(
new
AppsAdapter());
}
private
List<ResolveInfo> mApps;
private
void
loadApps() {
Intent mainIntent =
new
Intent(Intent.ACTION_MAIN,
null
);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(mainIntent,
0
);
}
public
class
AppsAdapter
extends
BaseAdapter {
public
AppsAdapter() {
}
public
View getView(
int
position, View convertView, ViewGroup parent) {
ImageView i;
if
(convertView ==
null
) {
i =
new
ImageView(MyHome.
this
);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(
new
GridView.LayoutParams(
50
,
50
));
}
else
{
i = (ImageView) convertView;
}
ResolveInfo info = mApps.get(position);
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return
i;
}
public
final
int
getCount() {
return
mApps.size();
}
public
final
Object getItem(
int
position) {
return
mApps.get(position);
}
public
final
long
getItemId(
int
position) {
return
position;
}
}
}