package io.virtualapp.home.adapters;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.lody.virtual.helper.utils.Reflect;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import io.virtualapp.VApp;
import io.virtualapp.home.ListAppFragment;
/**
* @author Lody
*/
public class AppPagerAdapter extends FragmentPagerAdapter {
private List<String> titles = new ArrayList<>();
private List<File> dirs = new ArrayList<>();
public AppPagerAdapter(FragmentManager fm) {
super(fm);
titles.add("Clone Apps");
dirs.add(null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Context ctx = VApp.getApp();
StorageManager storage = (StorageManager) ctx.getSystemService(Context.STORAGE_SERVICE);
for (StorageVolume volume : storage.getStorageVolumes()) {
//Why the fuck are getPathFile and getUserLabel hidden?!
//StorageVolume is kinda useless without those...
File dir = Reflect.on(volume).call("getPathFile").get();
String label = Reflect.on(volume).call("getUserLabel").get();
if (dir.listFiles() != null) {
titles.add(label);
dirs.add(dir);
}
}
} else {
// Fallback: only support the default storage sources
File storageFir = Environment.getExternalStorageDirectory();
if (storageFir.list() != null) {
titles.add("Ghost Installation");
dirs.add(storageFir);
}
}
}
@Override
public Fragment getItem(int position) {
return ListAppFragment.newInstance(dirs.get(position));
}
@Override
public int getCount() {
return titles.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}