Nor*_*ora 2 java android android-activity
我有一个Activity类,调用的方法getPacketNames()返回了一些已安装包的名称.
private ArrayList<CharSequence> getPackageNames(){
ArrayList<CharSequence> packageNames = new ArrayList<>();
List<PackageInfo> packagesInfos = getPackageManager().getInstalledPackages(0);
for(PackageInfo packageInfo: packagesInfos){
if(!isSystemApp(packageInfo)){
packageNames.add(packageInfo.packageName);
}
}
return packageNames;
}
Run Code Online (Sandbox Code Playgroud)
我希望其他人可以轻松地从另一个类调用此方法.但是,为了这样做,他们必须创建活动的实例.这看起来很麻烦,而且不正确.
你是否可以在Activity之外创建此方法?当我创建一个单独的类并复制粘贴该方法时,它不起作用,因为getPackageManager().getInstalledPackages(0)似乎需要在一个活动中.
你不应该试图这样做.而是创建一个UtilityClass并使您的getPackageNames()静态方法.
public final class MyUtils {
public static ArrayList<CharSequence> getPackageNames(final Context context){
ArrayList<CharSequence> packageNames = new ArrayList<>();
List<PackageInfo> packagesInfos = context.getPackageManager().getInstalledPackages(0);
for(PackageInfo packageInfo: packagesInfos){
if(!isSystemApp(packageInfo)){
packageNames.add(packageInfo.packageName);
}
}
return packageNames;
}
private static boolean isSystemApp(...){
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后从Activity中,您可以按如下方式访问它:
MyUtils.getPackageNames(this);
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |