2013-04-17 151 views
3

我使用下面的代码获取安装包的名字,但是当我运行它,它“意外停止”应用程序意外停止,而

我给的权限波纹管

<uses-permission android:name="android.permission.RESTART_PACKAGES" /> 
<uses-permission android:name="android.permission.GET_TASKS" /> 
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /> 

哪些错误,此代码:

import java.util.List;   
import android.app.Activity; 
import android.content.Context; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageManager; 
import android.os.Bundle; 
import android.util.Log; 

public class MainActivity extends Activity 
{ 
    public static String Tag = "Task"; 
    Context ctx; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     //Intent service = new Intent(this,MyService.class); 
     PackageManager pm = getApplicationContext().getPackageManager(); 
      List<ApplicationInfo> pis = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);   

     for (ApplicationInfo appinfo : pis) 
     { 
      String S1=appinfo.className.toString(); 
      Log.i(Tag,S1); 

     } 
    } 
} 

我试图逐个检索已安装的应用程序。

+0

请上传堆栈跟踪 –

回答

0

appinfo.className的值可以是null。试试这个:

for (ApplicationInfo appinfo : pis)  
{ 
    Log.i(Tag, "" + appinfo.className); 
} 

,你会看到很多空值的日志。