package org.namelessrom.devicecontrol.modules.appmanager; import android.content.pm.IPackageStatsObserver; import android.content.pm.PackageStats; import android.os.Parcel; import android.os.RemoteException; import org.namelessrom.devicecontrol.App; import timber.log.Timber; /** * Our Stub for the package stats observer. * Usually we just have to override onGetStatsCompleted but my android studio instance is * going crazy and produces apps, which crash at onTransact... */ public class PackageStatsObserver extends IPackageStatsObserver.Stub { private static final String DESCRIPTOR = "android.content.pm.IPackageStatsObserver"; private OnPackageStatsListener packageStatsListener; public PackageStatsObserver(final OnPackageStatsListener listener) { packageStatsListener = listener; } @Override public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { switch (code) { case INTERFACE_TRANSACTION: { reply.writeString(DESCRIPTOR); return true; } case FIRST_CALL_TRANSACTION: { data.enforceInterface(DESCRIPTOR); final PackageStats _arg0; if ((0 != data.readInt())) { _arg0 = PackageStats.CREATOR.createFromParcel(data); } else { _arg0 = null; } final boolean _arg1 = (0 != data.readInt()); this.onGetStatsCompleted(_arg0, _arg1); return true; } } return true; } @Override public void onGetStatsCompleted(final PackageStats pStats, final boolean success) throws RemoteException { Timber.v("onGetStatsCompleted(): %s", success); App.HANDLER.post(new Runnable() { @Override public void run() { packageStatsListener.onPackageStats(pStats); } }); } public interface OnPackageStatsListener { void onPackageStats(final PackageStats packageStats); } }