在列表视图中显示活动(正在运行)的应用程序列表

时间:2012-01-31 10:00:35

标签: android

我正在尝试编写一个显示正在运行的应用程序列表的应用程序。我使用了活动经理。在运行应用程序时,它显示以下错误。错误日志中的“UNHANDLED EVENT LOOP EXECUTION”和应用程序正在强行关闭。

请帮我找出错误。 我的代码如下。

public class ActiveApplicationsActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
        List<ActivityManager.RunningAppProcessInfo> l = am.getRunningAppProcesses();

        String[] sl = (String[]) l.toArray();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sl);

        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
    }
}

我正在添加logcat信息

02-01 10:52:47.790: D/AndroidRuntime(333): Shutting down VM  
02-01 10:52:47.790: W/dalvikvm(333): threadid=1: thread exiting with uncaught exception (group=0x40015560)  
02-01 10:52:47.811: E/AndroidRuntime(333): FATAL EXCEPTION: main  
02-01 10:52:47.811: E/AndroidRuntime(333): java.lang.RuntimeException: Unable to start activity ComponentInfo   {com.msat.sd102268.taskmanager.activeapplications/com.msat.sd102268.taskmanager.activeapplications.ActiveApplicationsActivity}: java.lang.ClassCastException: [Ljava.lang.Object;  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.os.Handler.dispatchMessage(Handler.java:99)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.os.Looper.loop(Looper.java:123)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread.main(ActivityThread.java:3683)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at java.lang.reflect.Method.invokeNative(Native Method)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at java.lang.reflect.Method.invoke(Method.java:507)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at dalvik.system.NativeStart.main(Native Method)  
02-01 10:52:47.811: E/AndroidRuntime(333): Caused by: java.lang.ClassCastException: [Ljava.lang.Object;  
02-01 10:52:47.811: E/AndroidRuntime(333):  at com.msat.sd102268.taskmanager.activeapplications.ActiveApplicationsActivity.onCreate(ActiveApplicationsActivity.java:23)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)  
02-01 10:52:47.811: E/AndroidRuntime(333):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)  
02-01 10:52:47.811: E/AndroidRuntime(333):  ... 11 more  

1 个答案:

答案 0 :(得分:1)

String[] sl = (String[]) l.toArray();

您无法将ActivityManager.RunningAppProcessInfo转换为String

试试这个

String[] sl = new String[l.size()];
int i = 0;
for(RunningAppProcessInfo info : l)
 sl[i++] = info.getProcessName();// fictional function

或使用List本身

相关问题