Remove set permission bullshit
This commit is contained in:
parent
abc3598881
commit
672f06a6b2
|
|
@ -1,19 +0,0 @@
|
|||
package android.os;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class FileUtils {
|
||||
public static final int S_IRWXU = 448;
|
||||
public static final int S_IRUSR = 256;
|
||||
public static final int S_IWUSR = 128;
|
||||
public static final int S_IXUSR = 64;
|
||||
public static final int S_IRWXG = 56;
|
||||
public static final int S_IRGRP = 32;
|
||||
public static final int S_IWGRP = 16;
|
||||
public static final int S_IXGRP = 8;
|
||||
public static final int S_IRWXO = 7;
|
||||
public static final int S_IROTH = 4;
|
||||
public static final int S_IWOTH = 2;
|
||||
public static final int S_IXOTH = 1;
|
||||
|
||||
public static native int setPermissions(String paramString, int paramInt1, int paramInt2, int paramInt3);
|
||||
}
|
||||
|
|
@ -7,7 +7,6 @@ import android.app.PendingIntent;
|
|||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
|
@ -21,7 +20,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|||
import org.meowcat.edxposed.manager.adapters.AppHelper;
|
||||
import org.meowcat.edxposed.manager.receivers.PackageChangeReceiver;
|
||||
import org.meowcat.edxposed.manager.ui.activity.CrashReportActivity;
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
import org.meowcat.edxposed.manager.util.ModuleUtil;
|
||||
import org.meowcat.edxposed.manager.util.NotificationUtil;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
|
|
@ -61,11 +59,10 @@ public class App extends Application implements Application.ActivityLifecycleCal
|
|||
return instance.pref;
|
||||
}
|
||||
|
||||
public static void mkdirAndChmod(String dir, int permissions) {
|
||||
public static void mkdir(String dir) {
|
||||
dir = Constants.getBaseDir() + dir;
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
new File(dir).mkdir();
|
||||
FileUtils.setPermissions(dir, permissions);
|
||||
}
|
||||
|
||||
public static boolean supportScope() {
|
||||
|
|
@ -142,12 +139,10 @@ public class App extends Application implements Application.ActivityLifecycleCal
|
|||
new Intent(this, PackageChangeReceiver.class), 0);
|
||||
}
|
||||
|
||||
@SuppressWarnings({"OctalInteger"})
|
||||
@SuppressLint({"PrivateApi", "NewApi"})
|
||||
private void createDirectories() {
|
||||
FileUtils.setPermissions(Constants.getBaseDir(), 00777);
|
||||
mkdirAndChmod("conf", 00777);
|
||||
mkdirAndChmod("log", 00777);
|
||||
mkdir("conf");
|
||||
mkdir("log");
|
||||
}
|
||||
|
||||
public void updateProgressIndicator(final SwipeRefreshLayout refreshLayout) {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import org.meowcat.edxposed.manager.BuildConfig;
|
|||
import org.meowcat.edxposed.manager.Constants;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.util.CompileUtil;
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
|
|
@ -38,7 +37,6 @@ import java.util.Objects;
|
|||
|
||||
import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class AppHelper {
|
||||
|
||||
private static final String BASE_PATH = Constants.getBaseDir();
|
||||
|
|
@ -54,11 +52,10 @@ public class AppHelper {
|
|||
|
||||
private static final HashMap<String, List<String>> scopeList = new HashMap<>();
|
||||
|
||||
@SuppressWarnings("OctalInteger")
|
||||
static void makeSurePath() {
|
||||
App.mkdirAndChmod(WHITE_LIST_PATH, 00777);
|
||||
App.mkdirAndChmod(BLACK_LIST_PATH, 00777);
|
||||
App.mkdirAndChmod(COMPAT_LIST_PATH, 00777);
|
||||
App.mkdir(WHITE_LIST_PATH);
|
||||
App.mkdir(BLACK_LIST_PATH);
|
||||
App.mkdir(COMPAT_LIST_PATH);
|
||||
}
|
||||
|
||||
public static boolean isWhiteListMode() {
|
||||
|
|
@ -141,7 +138,6 @@ public class AppHelper {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(file.getPath());
|
||||
setFilePermissionsFromMode(file.getPath(), Context.MODE_WORLD_READABLE);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
|
@ -167,20 +163,6 @@ public class AppHelper {
|
|||
return returns;
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
@SuppressLint({"WorldReadableFiles", "WorldWriteableFiles"})
|
||||
private static void setFilePermissionsFromMode(String name, int mode) {
|
||||
int perms = FileUtils.S_IRUSR | FileUtils.S_IWUSR
|
||||
| FileUtils.S_IRGRP | FileUtils.S_IWGRP;
|
||||
if ((mode & Context.MODE_WORLD_READABLE) != 0) {
|
||||
perms |= FileUtils.S_IROTH;
|
||||
}
|
||||
if ((mode & Context.MODE_WORLD_WRITEABLE) != 0) {
|
||||
perms |= FileUtils.S_IWOTH;
|
||||
}
|
||||
FileUtils.setPermissions(name, perms);
|
||||
}
|
||||
|
||||
@SuppressLint("WorldReadableFiles")
|
||||
private static Boolean blackListFileName(String packageName, boolean isAdd) {
|
||||
boolean returns = true;
|
||||
|
|
@ -190,7 +172,6 @@ public class AppHelper {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(file.getPath());
|
||||
setFilePermissionsFromMode(file.getPath(), Context.MODE_WORLD_READABLE);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
|
@ -225,7 +206,6 @@ public class AppHelper {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(file.getPath());
|
||||
setFilePermissionsFromMode(file.getPath(), Context.MODE_WORLD_READABLE);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
|
@ -366,7 +346,6 @@ public class AppHelper {
|
|||
return false;
|
||||
}
|
||||
scopeList.put(modulePackageName, list);
|
||||
setFilePermissionsFromMode(file.getPath(), Context.MODE_WORLD_READABLE);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import android.content.pm.ApplicationInfo;
|
|||
import android.widget.CompoundButton;
|
||||
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.util.ToastUtil;
|
||||
import org.meowcat.edxposed.manager.ui.widget.MasterSwitch;
|
||||
import org.meowcat.edxposed.manager.util.ToastUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -19,13 +19,13 @@ import androidx.fragment.app.FragmentManager;
|
|||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsFragment;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsSettingsFragment;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsVersionsFragment;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.databinding.ActivityDownloadDetailsBinding;
|
||||
import org.meowcat.edxposed.manager.databinding.ActivityDownloadDetailsNotFoundBinding;
|
||||
import org.meowcat.edxposed.manager.repo.Module;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsFragment;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsSettingsFragment;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.DownloadDetailsVersionsFragment;
|
||||
import org.meowcat.edxposed.manager.util.ModuleUtil;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|||
import com.google.gson.Gson;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.BaseAdvancedInstaller;
|
||||
import org.meowcat.edxposed.manager.BuildConfig;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.StatusInstallerFragment;
|
||||
import org.meowcat.edxposed.manager.databinding.ActivityEdDownloadBinding;
|
||||
import org.meowcat.edxposed.manager.databinding.DialogInstallWarningBinding;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.BaseAdvancedInstaller;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.StatusInstallerFragment;
|
||||
import org.meowcat.edxposed.manager.util.json.JSONUtils;
|
||||
import org.meowcat.edxposed.manager.util.json.XposedTab;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import androidx.core.content.ContextCompat;
|
|||
|
||||
import com.bumptech.glide.Glide;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.Constants;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.adapters.AppHelper;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import org.meowcat.edxposed.manager.adapters.AppAdapter;
|
|||
import org.meowcat.edxposed.manager.adapters.AppHelper;
|
||||
import org.meowcat.edxposed.manager.adapters.ScopeAdapter;
|
||||
import org.meowcat.edxposed.manager.databinding.ActivityScopeListBinding;
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix;
|
||||
|
||||
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
|
||||
|
|
|
|||
|
|
@ -24,21 +24,16 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|||
import com.takisoft.preferencex.PreferenceFragmentCompat;
|
||||
import com.topjohnwu.superuser.Shell;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.Constants;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.adapters.AppHelper;
|
||||
import org.meowcat.edxposed.manager.adapters.BlackListAdapter;
|
||||
import org.meowcat.edxposed.manager.databinding.ActivitySettingsBinding;
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
import org.meowcat.edxposed.manager.ui.widget.IntegerListPreference;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public class SettingsActivity extends BaseActivity {
|
||||
private static final String KEY_PREFIX = SettingsActivity.class.getName() + '.';
|
||||
|
|
@ -113,7 +108,7 @@ public class SettingsActivity extends BaseActivity {
|
|||
return restarting || super.dispatchGenericMotionEvent(event);
|
||||
}
|
||||
|
||||
@SuppressWarnings({"ResultOfMethodCallIgnored", "deprecation"})
|
||||
@SuppressWarnings({"ResultOfMethodCallIgnored"})
|
||||
public static class SettingsFragment extends PreferenceFragmentCompat {
|
||||
private static final File disableResourcesFlag = new File(Constants.getBaseDir() + "conf/disable_resources");
|
||||
private static final File dynamicModulesFlag = new File(Constants.getBaseDir() + "conf/dynamicmodules");
|
||||
|
|
@ -125,19 +120,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
private static final File verboseLogProcessID = new File(Constants.getBaseDir() + "log/all.pid");
|
||||
private static final File modulesLogProcessID = new File(Constants.getBaseDir() + "log/error.pid");
|
||||
|
||||
@SuppressLint({"WorldReadableFiles", "WorldWriteableFiles"})
|
||||
static void setFilePermissionsFromMode(String name) {
|
||||
int perms = FileUtils.S_IRUSR | FileUtils.S_IWUSR
|
||||
| FileUtils.S_IRGRP | FileUtils.S_IWGRP;
|
||||
if ((MODE_WORLD_READABLE) != 0) {
|
||||
perms |= FileUtils.S_IROTH;
|
||||
}
|
||||
if ((Context.MODE_WORLD_READABLE & MODE_WORLD_WRITEABLE) != 0) {
|
||||
perms |= FileUtils.S_IWOTH;
|
||||
}
|
||||
FileUtils.setPermissions(name, perms);
|
||||
}
|
||||
|
||||
@SuppressLint({"ObsoleteSdkInt", "WorldReadableFiles"})
|
||||
@Override
|
||||
public void onCreatePreferencesFix(Bundle savedInstanceState, String rootKey) {
|
||||
|
|
@ -175,7 +157,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(whiteListModeFlag.getPath());
|
||||
setFilePermissionsFromMode(whiteListModeFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -208,7 +189,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(disableVerboseLogsFlag.getPath());
|
||||
setFilePermissionsFromMode(disableVerboseLogsFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -241,7 +221,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(disableModulesLogsFlag.getPath());
|
||||
setFilePermissionsFromMode(disableModulesLogsFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -274,7 +253,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(blackWhiteListModeFlag.getPath());
|
||||
setFilePermissionsFromMode(blackWhiteListModeFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -307,7 +285,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(deoptBootFlag.getPath());
|
||||
setFilePermissionsFromMode(deoptBootFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -340,7 +317,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(dynamicModulesFlag.getPath());
|
||||
setFilePermissionsFromMode(dynamicModulesFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
@ -373,7 +349,6 @@ public class SettingsActivity extends BaseActivity {
|
|||
FileOutputStream fos = null;
|
||||
try {
|
||||
fos = new FileOutputStream(disableResourcesFlag.getPath());
|
||||
setFilePermissionsFromMode(disableResourcesFlag.getPath());
|
||||
} catch (FileNotFoundException e) {
|
||||
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -26,10 +26,10 @@ import org.meowcat.edxposed.manager.repo.ReleaseType;
|
|||
import org.meowcat.edxposed.manager.repo.RepoParser;
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
import org.meowcat.edxposed.manager.ui.activity.DownloadDetailsActivity;
|
||||
import org.meowcat.edxposed.manager.ui.widget.DownloadView;
|
||||
import org.meowcat.edxposed.manager.util.ModuleUtil.InstalledModule;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
import org.meowcat.edxposed.manager.util.chrome.LinkTransformationMethod;
|
||||
import org.meowcat.edxposed.manager.ui.widget.DownloadView;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.Date;
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import android.widget.LinearLayout;
|
|||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.databinding.DownloadViewBinding;
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
import org.meowcat.edxposed.manager.util.NavUtil;
|
||||
|
||||
public class DownloadView extends LinearLayout {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import android.content.pm.ApplicationInfo;
|
|||
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import org.meowcat.edxposed.manager.ui.fragment.CompileDialogFragment;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.ui.fragment.CompileDialogFragment;
|
||||
|
||||
public class CompileUtil {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
package org.meowcat.edxposed.manager.util;
|
||||
|
||||
public class FileUtils {
|
||||
|
||||
public static final int S_IRUSR = 256;
|
||||
public static final int S_IWUSR = 128;
|
||||
public static final int S_IRGRP = 32;
|
||||
public static final int S_IWGRP = 16;
|
||||
public static final int S_IROTH = 4;
|
||||
public static final int S_IWOTH = 2;
|
||||
|
||||
public static void setPermissions(String dir, int permissions) {
|
||||
android.os.FileUtils.setPermissions(dir, permissions, -1, -1);
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
@SuppressWarnings("OctalInteger")
|
||||
public final class ModuleUtil {
|
||||
private static final String PLAY_STORE_PACKAGE = "com.android.vending";
|
||||
// xposedminversion below this
|
||||
|
|
@ -248,9 +247,6 @@ public final class ModuleUtil {
|
|||
modulesList.close();
|
||||
enabledModulesList.close();
|
||||
|
||||
FileUtils.setPermissions(Constants.getEnabledModulesListFile(), 00664);
|
||||
FileUtils.setPermissions(Constants.getEnabledModulesListFile(), 00664);
|
||||
|
||||
if (showToast) {
|
||||
if (binding != null) {
|
||||
Snackbar.make(binding.snackbar, R.string.xposed_module_list_updated, Snackbar.LENGTH_SHORT).show();
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ import androidx.browser.customtabs.CustomTabsIntent;
|
|||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.ui.activity.BaseActivity;
|
||||
|
||||
public final class NavUtil {
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ import androidx.core.content.ContextCompat;
|
|||
import com.topjohnwu.superuser.Shell;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.ui.activity.MainActivity;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.ui.activity.MainActivity;
|
||||
|
||||
public final class NotificationUtil {
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.meowcat.edxposed.manager.App;
|
||||
import org.meowcat.edxposed.manager.ui.activity.DownloadActivity;
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.repo.Module;
|
||||
import org.meowcat.edxposed.manager.repo.ModuleVersion;
|
||||
|
|
@ -26,6 +25,7 @@ import org.meowcat.edxposed.manager.repo.RepoDb;
|
|||
import org.meowcat.edxposed.manager.repo.RepoParser;
|
||||
import org.meowcat.edxposed.manager.repo.RepoParser.RepoParserCallback;
|
||||
import org.meowcat.edxposed.manager.repo.Repository;
|
||||
import org.meowcat.edxposed.manager.ui.activity.DownloadActivity;
|
||||
import org.meowcat.edxposed.manager.util.DownloadsUtil.SyncDownloadInfo;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
|||
Loading…
Reference in New Issue