在试图获取手机安装应用时,我在Activity
内写入以下代码,并没有发生问题。
private void getPackages(){
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo appInfo = new AppInfo();
appInfo.setAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
appInfo.setPackageName(packageInfo.packageName);
appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(getPackageManager()));
Log.i(TAG, appInfo.toString());
}
}
但将函数迁移到其他文件时,却发生了错误
在上网查询解答发现,getPackageManager() 方法必须在Activity
中,而Activity
属于Context
,所以我们需要输入context
变量来解决问题。
public void getPackages(Context context){
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
for(int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo appInfo = new AppInfo();
appInfo.setAppName(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString());
appInfo.setPackageName(packageInfo.packageName);
appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(context.getPackageManager()));
Log.i(TAG, appInfo.toString());
}
}