Im wanted to save a object from my class which has the package names etc. . So I tried to find a solution to save this object through SharedPreferences and found out that I can make this Object to a JSON String with the Gson class. But the first try failed. Im getting a Error by converting it . I also debugged step by step and found the line :
String jsonapp = gson.toJson(installed_apps);
Here's the whole code :
List<PackageInfo> apps;
List<AppInfo> installed_apps;
...
apps = getPackageManager().getInstalledPackages(0);
installed_apps = new ArrayList<AppInfo>();
for(int i=0;i<apps.size();i++)
{
PackageInfo p = apps.get(i);
AppInfo newInfo = new AppInfo();
newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
installed_apps.add(newInfo);
}
Gson gson = new Gson();
String jsonapp = gson.toJson(installed_apps);
And here is my class :
class AppInfo {
String appname = "";
String pname = "";
String versionName = "";
int versionCode = 0;
Drawable icon;
public String get_appname () {
return appname;
}
};
Crash Report :
11-25 20:20:20.911: E/AndroidRuntime(21989): FATAL EXCEPTION: main
11-25 20:20:20.911: E/AndroidRuntime(21989): Process: com.ronssoft.JewE_lite, PID: 21989
11-25 20:20:20.911: E/AndroidRuntime(21989): java.lang.StackOverflowError
11-25 20:20:20.911: E/AndroidRuntime(21989): at java.lang.Class.isArray(Class.java:1118)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:331)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:355)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:117)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.Gson.getAdapter(Gson.java:356)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118)
11-25 20:20:20.911: E/AndroidRuntime(21989): at com.google.gson.internal.bind.R
Why do I get this error and whats the solution for it ? Any ideas ? Thank You !