Reputation: 2216
I am getting list of third party applications though this code.
ApplicationInfo ai;
final PackageManager pm = main.getPackageManager();
List<ApplicationInfo> packages1 = null;
int index = 0;
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo appInfo : packages)
{
if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
{
// IS A SYSTEM APP
}
else
{
packages1.add(index, appInfo);
index++;
}
}
But I get an exception , when I comment this line :
packages1.add(index, appInfo);
Then the code executes correctly , but it gives exception due to this line. Here is my logcat:
07-01 05:19:32.058: W/dalvikvm(5558): threadid=8: thread exiting with uncaught exception (group=0x4001d7d0)
07-01 05:19:32.065: E/AndroidRuntime(5558): FATAL EXCEPTION: AsyncTask #1
07-01 05:19:32.065: E/AndroidRuntime(5558): java.lang.RuntimeException: An error occured while executing doInBackground()
07-01 05:19:32.065: E/AndroidRuntime(5558): at android.os.AsyncTask$3.done(AsyncTask.java:200)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.lang.Thread.run(Thread.java:1096)
07-01 05:19:32.065: E/AndroidRuntime(5558): Caused by: java.lang.NullPointerException
07-01 05:19:32.065: E/AndroidRuntime(5558): at com.example.first.Fetch_Software.doInBackground(Fetch_Software.java:46)
07-01 05:19:32.065: E/AndroidRuntime(5558): at com.example.first.Fetch_Software.doInBackground(Fetch_Software.java:1)
07-01 05:19:32.065: E/AndroidRuntime(5558): at android.os.AsyncTask$2.call(AsyncTask.java:185)
07-01 05:19:32.065: E/AndroidRuntime(5558): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-01 05:19:32.065: E/AndroidRuntime(5558): ... 4 more
07-01 05:19:36.894: E/WindowManager(5558): Activity com.example.first.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@47faa8f8 that was originally added here
07-01 05:19:36.894: E/WindowManager(5558): android.view.WindowLeaked: Activity com.example.first.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@47faa8f8 that was originally added here
07-01 05:19:36.894: E/WindowManager(5558): at android.view.ViewRoot.<init>(ViewRoot.java:247)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:171)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.Window$LocalWindowManager.addView(Window.java:424)
07-01 05:19:36.894: E/WindowManager(5558): at android.app.Dialog.show(Dialog.java:241)
07-01 05:19:36.894: E/WindowManager(5558): at com.example.first.MainActivity.onClick(MainActivity.java:114)
07-01 05:19:36.894: E/WindowManager(5558): at java.lang.reflect.Method.invokeNative(Native Method)
07-01 05:19:36.894: E/WindowManager(5558): at java.lang.reflect.Method.invoke(Method.java:521)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.View$1.onClick(View.java:2067)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.View.performClick(View.java:2408)
07-01 05:19:36.894: E/WindowManager(5558): at android.view.View$PerformClick.run(View.java:8818)
07-01 05:19:36.894: E/WindowManager(5558): at android.os.Handler.handleCallback(Handler.java:587)
07-01 05:19:36.894: E/WindowManager(5558): at android.os.Handler.dispatchMessage(Handler.java:92)
07-01 05:19:36.894: E/WindowManager(5558): at android.os.Looper.loop(Looper.java:123)
07-01 05:19:36.894: E/WindowManager(5558): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-01 05:19:36.894: E/WindowManager(5558): at java.lang.reflect.Method.invokeNative(Native Method)
07-01 05:19:36.894: E/WindowManager(5558): at java.lang.reflect.Method.invoke(Method.java:521)
07-01 05:19:36.894: E/WindowManager(5558): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
07-01 05:19:36.894: E/WindowManager(5558): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
07-01 05:19:36.894: E/WindowManager(5558): at dalvik.system.NativeStart.main(Native Method)
Upvotes: 0
Views: 123
Reputation: 2630
I think you missed the declaration line.
It should be:
List<ApplicationInfo> packages1 = null;
packages1 = new ArrayList<ApplicationInfo>();
Upvotes: 5
Reputation: 10969
Null pointer occurred when you forget to initialization data type, here you forgot to initialize your List.
Just initialization your list like below:
List<ApplicationInfo> packages1 = new List<ApplicationInfo>();
Upvotes: 3
Reputation: 722
package1 hasn't been initialized, try following:
package1 = new ArrayList<ApplicationInfo>();
Upvotes: 1
Reputation: 134664
First you do this:
List<ApplicationInfo> packages1 = null;
Then you do this:
packages1.add(index, appInfo);
Which translates to:
null.add(index, appInfo);
Which finally becomes:
07-01 05:19:32.065: E/AndroidRuntime(5558): Caused by: java.lang.NullPointerException
07-01 05:19:32.065: E/AndroidRuntime(5558): at com.example.first.Fetch_Software.doInBackground(Fetch_Software.java:46)
in your logs.
Upvotes: 3