package com.google.android.diskusage.datasource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.util.List;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import com.google.android.diskusage.LoadableActivity;
import com.google.android.diskusage.datasource.fast.DefaultDataSource;
public abstract class DataSource {
private static DataSource currentDataSource = new DefaultDataSource();
public static DataSource get() {
return currentDataSource;
}
public static void override(DataSource dataSource) {
LoadableActivity.resetStoredStates();
currentDataSource = dataSource;
}
public abstract int getAndroidVersion();
public abstract List<PkgInfo> getInstalledPackages(PackageManager pm);
public abstract StatFsSource statFs(String mountPoint);
@TargetApi(Build.VERSION_CODES.FROYO)
public abstract PortableFile getExternalFilesDir(Context context);
@TargetApi(Build.VERSION_CODES.KITKAT)
public abstract PortableFile[] getExternalFilesDirs(Context context);
public abstract PortableFile getExternalStorageDirectory();
public abstract InputStream createNativeScanner(
Context context, String path,
boolean rootRequired) throws IOException, InterruptedException;
public abstract boolean isDeviceRooted();
public abstract LegacyFile createLegacyScanFile(String root);
public final BufferedReader getProcReader() throws IOException {
return new BufferedReader(new InputStreamReader(getProc()));
}
public abstract InputStream getProc() throws IOException;
public abstract void getPackageSizeInfo(
PkgInfo pkgInfo,
Method getPackageSizeInfo,
PackageManager pm,
AppStatsCallback callback) throws Exception;
public abstract PortableFile getParentFile(PortableFile file);
}