I'm trying to use Sugar in my Xposed module to save some stats, but since Xposed modules provide no context, it's causing the following exception:
E/Xposed﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'com.orm.Database com.orm.SugarApp.getDatabase()' on a null object reference
at com.orm.SugarRecord.find(SugarRecord.java:204)
at com.orm.SugarRecord.find(SugarRecord.java:172)
at net.jzhang.powernap.Database.DatabaseHelper.SaveStat(DatabaseHelper.java:25)
at net.jzhang.powernap.xposed.WakeLockManager.handleWakeLockAcquire(WakeLockManager.java:353)
at net.jzhang.powernap.xposed.WakeLockManager.access$100(WakeLockManager.java:39)
at net.jzhang.powernap.xposed.WakeLockManager$8.beforeHookedMethod(WakeLockManager.java:284)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:636)
at com.android.server.power.PowerManagerService.acquireWakeLockInternal(Unknown Source)
at com.android.server.power.PowerManagerService.access$3500(PowerManagerService.java:96)
at com.android.server.power.PowerManagerService$BinderService.acquireWakeLock(PowerManagerService.java:3057)
at android.os.IPowerManager$Stub.onTransact(IPowerManager.java:66)
at android.os.Binder.execTransact(Binder.java:446)
This is the method I'm using:
public void SaveStat(String packageName, String statName, String type, boolean isBlocked) {
List<AppPackage> appPackages = AppPackage.find(AppPackage.class, "name = ?", packageName);
if (appPackages.size() > 0) {
XposedBridge.log(TAG + "Package found in database.");
AppPackage appPackage = appPackages.get(0);
List<Stat> stats = Stat.find(Stat.class, "name = ? and type = ?", statName, type);
if (stats.size() > 0 && isBlocked) {
Stat stat = stats.get(0);
stat.timesBlocked += 1;
stat.save();
XposedBridge.log(TAG + "Existing stat updated in database.");
} else {
// create stat and save
new Stat(statName, type, appPackage).save();
XposedBridge.log(TAG + "New stat saved to database.");
}
} else {
// create package in database
AppPackage appPackage = new AppPackage(packageName);
appPackage.save();
// create stat for app
new Stat(statName, type, appPackage).save();
XposedBridge.log(TAG + "New package and stat created in database.");
}
}
Line 25 as mentioned in the error is the first line of the SaveStat function.
I can still retrieve a context object in Xposed, but since 1.1 you can't provide a context to the library anymore. Is there another way to do accomplish what I want?
I'm trying to use Sugar in my Xposed module to save some stats, but since Xposed modules provide no context, it's causing the following exception:
This is the method I'm using:
Line 25 as mentioned in the error is the first line of the
SaveStat
function.I can still retrieve a context object in Xposed, but since 1.1 you can't provide a context to the library anymore. Is there another way to do accomplish what I want?