2011-03-29 34 views
0

的名单,我有以下代码来获取安装在手机上的应用程序的列表,但我收到以下错误:误差获取应用程序

Type mismatch: cannot convert from element type Object to ResolveInfo" for the list "for (ResolveInfo rInfo : list)" and also "List is a raw type. References to generic type List should be parameterized" for "List list = pm.queryIntentActivities...

public class safety extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     PackageManager pm = this.getPackageManager(); 

     Intent intent = new Intent(Intent.ACTION_MAIN, null); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 

     List list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED); 
     for (ResolveInfo rInfo : list) { 
      Log.w("Installed Applications", rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()); 
     } 
    } 
} 

有谁知道如何解决这些错误?

回答

1

试试这个:

public class Safety extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     PackageManager pm = this.getPackageManager(); 

     Intent intent = new Intent(Intent.ACTION_MAIN, null); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 

     ArrayList<ResolveInfo> list = (ArrayList<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED); 
     for (ResolveInfo rInfo : list) { 
      System.out.println("Installed Applications " + rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()); 
     } 

    } 
} 
+0

当我尝试这种方式我得到的是一个黑色的屏幕当过我运行它。为什么会发生这种情况的任何建议? – 2011-03-29 11:44:55

+0

这是因为您尚未调用setContentView。您的活动没有任何可显示的内容。检查你的adb logcat。它将打印所有的应用程序名称。 – Vinoth 2011-03-29 11:56:38

+0

非常感谢...我不熟悉Eclipse和开发android应用程序,所以我没有关于logcat,那是第一个听说它的人:) – 2011-03-29 13:23:12