代码之家  ›  专栏  ›  技术社区  ›  Shouvik

Java:需要一些方法来缩短这段代码吗

  •  10
  • Shouvik  · 技术社区  · 14 年前

    我有一段代码要缩短。。。

        PackageManager p = context.getPackageManager();
        final List<PackageInfo> appinstall = p.getInstalledPackages(PackageManager.GET_PERMISSIONS);
        PackageManager pro = context.getPackageManager();
        final List<PackageInfo> apllprovides = pro.getInstalledPackages(PackageManager.GET_PROVIDERS);
    

    为了添加新的标志权限而一次又一次地这样做,我真的很恼火,我需要这样做几次,有没有一个更短的方法可以将所有标志放在同一个定义上。。。???

    我这么说吧,我能不能(当然,这会给出一个错误,但是类似的情况……)

        PackageManager p = context.getPackageManager();
        final List<PackageInfo> appinstall = p.getInstalledPackages(PackageManager.GET_PERMISSIONS).addFlag(PackageManager.GET_PROVIDERS);
    
    3 回复  |  直到 12 年前
        1
  •  9
  •   cjk    14 年前

    如果它的语法与C#相同,并且标志设置正确,则可以执行以下操作:

    PackageManager p = context.getPackageManager(); 
    final List<PackageInfo> appinstall = 
        p.getInstalledPackages(PackageManager.GET_PERMISSIONS | 
                                          PackageManager.GET_PROVIDERS)
    
        2
  •  2
  •   Justin user327094    13 年前
    public void usegetPackageInfo(){
        // 
        final ListView lw = (ListView) findViewById(R.id.listView1);
    
        PackageManager p = lw.getContext().getPackageManager(); 
        final List<PackageInfo> appinstall = 
            p.getInstalledPackages(PackageManager.GET_PERMISSIONS | 
                                              PackageManager.GET_PROVIDERS);
        final TextView tw = (TextView) findViewById(R.id.textView1);
        Iterator it = appinstall.iterator();
        while (it.hasNext()) {
            PackageInfo rf = (PackageInfo) it.next();
            tw.append(rf.toString());
    
        }
    
    }