应用程序在获取已安装软件包的名称时意外停止

时间:2013-04-17 06:11:39

标签: android

我正在使用以下代码,但是当我运行它时,它“意外停止”

我已经给出了权限,如下所示

<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);

        }
    }
}

我正在尝试逐个检索已安装的应用程序。

1 个答案:

答案 0 :(得分:0)

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

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

你会在日志中看到很多空值。