Fixes
This commit is contained in:
parent
642ea1090d
commit
b32afc0787
|
|
@ -1,15 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<compositeConfiguration>
|
||||
<compositeBuild compositeDefinitionSource="SCRIPT" />
|
||||
</compositeConfiguration>
|
||||
<option name="delegatedBuild" value="false" />
|
||||
<option name="testRunner" value="PLATFORM" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
<option name="testRunner" value="PLATFORM" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion "29.0.2"
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "29.0.3"
|
||||
defaultConfig {
|
||||
applicationId "org.meowcat.edxposed.manager"
|
||||
minSdkVersion 21
|
||||
|
|
@ -31,7 +31,7 @@ dependencies {
|
|||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||
implementation 'com.google.android.material:material:1.2.0-alpha04'
|
||||
implementation 'com.google.android.material:material:1.2.0-alpha05'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
|
||||
implementation 'com.github.bumptech.glide:glide:4.11.0'
|
||||
implementation "com.github.topjohnwu.libsu:core:2.5.1"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -19,6 +19,7 @@ import android.widget.TextView;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
|
|
@ -188,7 +189,7 @@ public class BaseAdvancedInstaller extends Fragment {
|
|||
view.findViewById(R.id.warning_unofficial).setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
showOnXda.setOnClickListener(v -> NavUtil.startURL(getActivity(), supportUrl()));
|
||||
showOnXda.setOnClickListener(v -> NavUtil.startURL((AppCompatActivity) getActivity(), supportUrl()));
|
||||
updateDescription.setOnClickListener(v -> new MaterialAlertDialogBuilder(Objects.requireNonNull(getContext()))
|
||||
.setTitle(R.string.changes)
|
||||
.setMessage(Html.fromHtml(description()))
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
|
|||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
|
@ -72,7 +73,7 @@ public class BlackListActivity extends BaseActivity implements AppAdapter.Callba
|
|||
@Override
|
||||
public boolean onCreateOptionsMenu(@NonNull Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_app_list, menu);
|
||||
mSearchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
|
||||
mSearchView.setOnQueryTextListener(mSearchListener);
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
|
|||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
|
@ -75,7 +76,7 @@ public class CompatListActivity extends BaseActivity implements AppAdapter.Callb
|
|||
@Override
|
||||
public boolean onCreateOptionsMenu(@NonNull Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_app_list, menu);
|
||||
mSearchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
|
||||
mSearchView.setOnQueryTextListener(mSearchListener);
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import android.net.ConnectivityManager;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
|
@ -18,10 +19,12 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
|
@ -152,7 +155,7 @@ public class DownloadActivity extends BaseActivity implements RepoLoader.RepoLis
|
|||
|
||||
// Setup search button
|
||||
final MenuItem searchItem = menu.findItem(R.id.menu_search);
|
||||
mSearchView = (SearchView) searchItem.getActionView();
|
||||
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
||||
mSearchView.setIconifiedByDefault(true);
|
||||
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
@Override
|
||||
|
|
@ -347,6 +350,11 @@ public class DownloadActivity extends BaseActivity implements RepoLoader.RepoLis
|
|||
txtStatus.setText(mContext.getString(
|
||||
R.string.download_status_installed, installedVersion));
|
||||
//txtStatus.setTextColor(ThemeUtil.getThemeColor(mContext, R.attr.download_status_installed));
|
||||
TypedValue typedValue = new TypedValue();
|
||||
Resources.Theme theme = txtStatus.getContext().getTheme();
|
||||
theme.resolveAttribute(android.R.attr.textColorSecondary, typedValue, true);
|
||||
@ColorInt int color = typedValue.data;
|
||||
txtStatus.setTextColor(color);
|
||||
txtStatus.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
txtStatus.setVisibility(View.GONE);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import org.meowcat.edxposed.manager.repo.Module;
|
||||
|
|
@ -45,7 +46,7 @@ public class DownloadDetailsFragment extends Fragment {
|
|||
if (module.description != null) {
|
||||
if (module.descriptionIsHtml) {
|
||||
description.setText(RepoParser.parseSimpleHtml(getActivity(), module.description, description));
|
||||
description.setTransformationMethod(new LinkTransformationMethod(getActivity()));
|
||||
description.setTransformationMethod(new LinkTransformationMethod((AppCompatActivity) getActivity()));
|
||||
description.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
} else {
|
||||
description.setText(module.description);
|
||||
|
|
@ -67,7 +68,7 @@ public class DownloadDetailsFragment extends Fragment {
|
|||
final Uri link = NavUtil.parseURL(moreInfoEntry.second);
|
||||
if (link != null) {
|
||||
txtValue.setTextColor(txtValue.getLinkTextColors());
|
||||
moreInfoView.setOnClickListener(v -> NavUtil.startURL(getActivity(), link));
|
||||
moreInfoView.setOnClickListener(v -> NavUtil.startURL((AppCompatActivity) getActivity(), link));
|
||||
}
|
||||
|
||||
moreInfoContainer.addView(moreInfoView);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import android.widget.FrameLayout;
|
|||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
|
||||
|
|
@ -247,7 +248,7 @@ public class DownloadDetailsVersionsFragment extends ListFragment {
|
|||
|
||||
if (item.changelogIsHtml) {
|
||||
holder.txtChanges.setText(RepoParser.parseSimpleHtml(getActivity(), item.changelog, holder.txtChanges));
|
||||
holder.txtChanges.setTransformationMethod(new LinkTransformationMethod(getActivity()));
|
||||
holder.txtChanges.setTransformationMethod(new LinkTransformationMethod((AppCompatActivity) getActivity()));
|
||||
holder.txtChanges.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
} else {
|
||||
holder.txtChanges.setText(item.changelog);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import android.content.ActivityNotFoundException;
|
|||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
|
|
@ -25,6 +24,7 @@ import androidx.annotation.NonNull;
|
|||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
|
@ -162,7 +162,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
|
|||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_modules, menu);
|
||||
mSearchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
|
||||
mSearchView.setOnQueryTextListener(mSearchListener);
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.FileUtils;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
|
|
@ -25,6 +24,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|||
import com.takisoft.preferencex.PreferenceFragmentCompat;
|
||||
import com.topjohnwu.superuser.Shell;
|
||||
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
|
||||
import java.io.File;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package org.meowcat.edxposed.manager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
|
|
@ -10,7 +9,6 @@ import android.content.pm.PackageManager;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.FileUtils;
|
||||
import android.text.Html;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -19,10 +17,13 @@ import android.view.ViewGroup;
|
|||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
|
@ -35,7 +36,7 @@ import java.util.Objects;
|
|||
public class StatusInstallerFragment extends Fragment {
|
||||
|
||||
public static final File DISABLE_FILE = new File(XposedApp.BASE_DIR + "conf/disabled");
|
||||
private static Activity sActivity;
|
||||
private static AppCompatActivity sActivity;
|
||||
private static String mUpdateLink;
|
||||
private static View mUpdateView;
|
||||
private static View mUpdateButton;
|
||||
|
|
@ -115,7 +116,7 @@ public class StatusInstallerFragment extends Fragment {
|
|||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
sActivity = getActivity();
|
||||
sActivity = (AppCompatActivity) getActivity();
|
||||
}
|
||||
|
||||
@SuppressLint("WorldReadableFiles")
|
||||
|
|
|
|||
|
|
@ -12,16 +12,17 @@ import android.content.res.Resources;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.FileUtils;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import org.meowcat.edxposed.manager.receivers.PackageChangeReceiver;
|
||||
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;
|
||||
|
|
@ -52,7 +53,7 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem
|
|||
private static Thread mUiThread;
|
||||
private static Handler mMainHandler;
|
||||
private SharedPreferences mPref;
|
||||
private Activity mCurrentActivity = null;
|
||||
private AppCompatActivity mCurrentActivity = null;
|
||||
private boolean mIsUiLoaded = false;
|
||||
|
||||
public static XposedApp getInstance() {
|
||||
|
|
@ -236,7 +237,7 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem
|
|||
|
||||
@Override
|
||||
public synchronized void onActivityResumed(@NonNull Activity activity) {
|
||||
mCurrentActivity = activity;
|
||||
mCurrentActivity = (AppCompatActivity) activity;
|
||||
updateProgressIndicator(null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.FileUtils;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
|
@ -20,6 +19,7 @@ import org.meowcat.edxposed.manager.BuildConfig;
|
|||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.XposedApp;
|
||||
import org.meowcat.edxposed.manager.util.CompileUtil;
|
||||
import org.meowcat.edxposed.manager.util.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,174 @@
|
|||
package org.meowcat.edxposed.manager.util;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.zip.CRC32;
|
||||
import java.util.zip.CheckedInputStream;
|
||||
|
||||
@SuppressWarnings("ALL")
|
||||
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;
|
||||
private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");
|
||||
|
||||
public static native int setPermissions(String paramString, int paramInt1, int paramInt2, int paramInt3);
|
||||
|
||||
public static native int getFatVolumeId(String paramString);
|
||||
|
||||
public static boolean sync(FileOutputStream stream) {
|
||||
try {
|
||||
if (stream != null)
|
||||
stream.getFD().sync();
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean copyFile(File srcFile, File destFile) {
|
||||
boolean result = false;
|
||||
try {
|
||||
InputStream in = new FileInputStream(srcFile);
|
||||
try {
|
||||
result = copyToFile(in, destFile);
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean copyToFile(InputStream inputStream, File destFile) {
|
||||
try {
|
||||
if (destFile.exists())
|
||||
destFile.delete();
|
||||
FileOutputStream out = new FileOutputStream(destFile);
|
||||
try {
|
||||
byte[] buffer = new byte[4096];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) >= 0)
|
||||
out.write(buffer, 0, bytesRead);
|
||||
} finally {
|
||||
out.flush();
|
||||
try {
|
||||
out.getFD().sync();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
out.close();
|
||||
}
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isFilenameSafe(File file) {
|
||||
return SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches();
|
||||
}
|
||||
|
||||
public static String readTextFile(File file, int max, String ellipsis) throws IOException {
|
||||
InputStream input = new FileInputStream(file);
|
||||
BufferedInputStream bis = new BufferedInputStream(input);
|
||||
try {
|
||||
long size = file.length();
|
||||
if (max > 0 || (size > 0L && max == 0)) {
|
||||
if (size > 0L && (max == 0 || size < max))
|
||||
max = (int) size;
|
||||
byte[] arrayOfByte = new byte[max + 1];
|
||||
int length = bis.read(arrayOfByte);
|
||||
if (length <= 0)
|
||||
return "";
|
||||
if (length <= max)
|
||||
return new String(arrayOfByte, 0, length);
|
||||
if (ellipsis == null)
|
||||
return new String(arrayOfByte, 0, max);
|
||||
return new String(arrayOfByte, 0, max) + ellipsis;
|
||||
}
|
||||
if (max < 0) {
|
||||
int len;
|
||||
boolean rolled = false;
|
||||
byte[] last = null, arrayOfByte1 = null;
|
||||
do {
|
||||
if (last != null)
|
||||
rolled = true;
|
||||
byte[] tmp = last;
|
||||
last = arrayOfByte1;
|
||||
arrayOfByte1 = tmp;
|
||||
if (arrayOfByte1 == null)
|
||||
arrayOfByte1 = new byte[-max];
|
||||
len = bis.read(arrayOfByte1);
|
||||
} while (len == arrayOfByte1.length);
|
||||
if (last == null && len <= 0)
|
||||
return "";
|
||||
if (last == null)
|
||||
return new String(arrayOfByte1, 0, len);
|
||||
if (len > 0) {
|
||||
rolled = true;
|
||||
System.arraycopy(last, len, last, 0, last.length - len);
|
||||
System.arraycopy(arrayOfByte1, 0, last, last.length - len, len);
|
||||
}
|
||||
if (ellipsis == null || !rolled)
|
||||
return new String(last);
|
||||
return ellipsis + new String(last);
|
||||
}
|
||||
ByteArrayOutputStream contents = new ByteArrayOutputStream();
|
||||
byte[] data = new byte[1024];
|
||||
while (true) {
|
||||
int len = bis.read(data);
|
||||
if (len > 0)
|
||||
contents.write(data, 0, len);
|
||||
if (len != data.length)
|
||||
return contents.toString();
|
||||
}
|
||||
} finally {
|
||||
bis.close();
|
||||
input.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static void stringToFile(String filename, String string) throws IOException {
|
||||
FileWriter out = new FileWriter(filename);
|
||||
try {
|
||||
out.write(string);
|
||||
} finally {
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static long checksumCrc32(File file) throws FileNotFoundException, IOException {
|
||||
CRC32 checkSummer = new CRC32();
|
||||
CheckedInputStream cis = null;
|
||||
try {
|
||||
cis = new CheckedInputStream(new FileInputStream(file), checkSummer);
|
||||
byte[] buf = new byte[128];
|
||||
while (cis.read(buf) >= 0) ;
|
||||
return checkSummer.getValue();
|
||||
} finally {
|
||||
if (cis != null)
|
||||
try {
|
||||
cis.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
|
|||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.FileUtils;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package org.meowcat.edxposed.manager.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.text.Spannable;
|
||||
|
|
@ -11,9 +9,12 @@ import android.text.util.Linkify;
|
|||
|
||||
import androidx.annotation.AnyThread;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.browser.customtabs.CustomTabsIntent;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.meowcat.edxposed.manager.R;
|
||||
import org.meowcat.edxposed.manager.XposedApp;
|
||||
|
||||
|
|
@ -30,20 +31,20 @@ public final class NavUtil {
|
|||
return (spans.length > 0) ? Uri.parse(spans[0].getURL()) : null;
|
||||
}
|
||||
|
||||
public static void startURL(Activity activity, Uri uri) {
|
||||
public static void startURL(AppCompatActivity activity, Uri uri) {
|
||||
CustomTabsIntent.Builder customTabsIntent = new CustomTabsIntent.Builder();
|
||||
customTabsIntent.setShowTitle(true);
|
||||
customTabsIntent.setToolbarColor(ContextCompat.getColor(activity, R.color.colorPrimary));
|
||||
customTabsIntent.build().launchUrl(activity, uri);
|
||||
}
|
||||
|
||||
public static void startURL(Activity activity, String url) {
|
||||
public static void startURL(AppCompatActivity activity, String url) {
|
||||
startURL(activity, parseURL(url));
|
||||
}
|
||||
|
||||
@AnyThread
|
||||
public static void showMessage(final @NonNull Context context, final CharSequence message) {
|
||||
XposedApp.runOnUiThread(() -> new AlertDialog.Builder(context)
|
||||
XposedApp.runOnUiThread(() -> new MaterialAlertDialogBuilder(context)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show());
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package org.meowcat.edxposed.manager.util.chrome;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.text.style.URLSpan;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import org.meowcat.edxposed.manager.util.NavUtil;
|
||||
|
||||
/**
|
||||
|
|
@ -11,9 +12,9 @@ import org.meowcat.edxposed.manager.util.NavUtil;
|
|||
*/
|
||||
public class CustomTabsURLSpan extends URLSpan {
|
||||
|
||||
private Activity activity;
|
||||
private AppCompatActivity activity;
|
||||
|
||||
CustomTabsURLSpan(Activity activity, String url) {
|
||||
CustomTabsURLSpan(AppCompatActivity activity, String url) {
|
||||
super(url);
|
||||
this.activity = activity;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package org.meowcat.edxposed.manager.util.chrome;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Rect;
|
||||
import android.text.Spannable;
|
||||
import android.text.Spanned;
|
||||
|
|
@ -10,14 +9,16 @@ import android.text.util.Linkify;
|
|||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
/**
|
||||
* Created by Nikola D. on 12/23/2015.
|
||||
*/
|
||||
public class LinkTransformationMethod implements TransformationMethod {
|
||||
|
||||
private Activity activity;
|
||||
private AppCompatActivity activity;
|
||||
|
||||
public LinkTransformationMethod(Activity activity) {
|
||||
public LinkTransformationMethod(AppCompatActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package org.meowcat.edxposed.manager.util.json;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -10,6 +9,7 @@ import android.widget.TextView;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ public class XposedZip {
|
|||
View row;
|
||||
ItemHolder holder = new ItemHolder();
|
||||
|
||||
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
|
||||
LayoutInflater inflater = ((AppCompatActivity) context).getLayoutInflater();
|
||||
row = inflater.inflate(android.R.layout.simple_dropdown_item_1line, parent, false);
|
||||
|
||||
holder.name = row.findViewById(android.R.id.text1);
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/ic_launcher_foreground" />
|
||||
app:srcCompat="@drawable/ic_launcher_foreground" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_info" />
|
||||
app:srcCompat="@drawable/ic_info" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
android:id="@+id/changelogView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_history" />
|
||||
app:srcCompat="@drawable/ic_history" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
android:id="@+id/licensesView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -140,7 +140,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_description" />
|
||||
app:srcCompat="@drawable/ic_description" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
android:id="@+id/translatorsView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -171,7 +171,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_language" />
|
||||
app:srcCompat="@drawable/ic_language" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -202,7 +202,7 @@
|
|||
android:id="@+id/tgChannelView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -214,7 +214,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_modules" />
|
||||
app:srcCompat="@drawable/ic_modules" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -240,7 +240,7 @@
|
|||
android:id="@+id/qqGroupView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -252,7 +252,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_help" />
|
||||
app:srcCompat="@drawable/ic_help" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -278,7 +278,7 @@
|
|||
android:id="@+id/tgGroupView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -290,7 +290,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_help" />
|
||||
app:srcCompat="@drawable/ic_help" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -317,7 +317,7 @@
|
|||
android:id="@+id/sourceCodeView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -329,7 +329,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_github" />
|
||||
app:srcCompat="@drawable/ic_github" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -355,7 +355,7 @@
|
|||
android:id="@+id/donateView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -367,7 +367,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_donate" />
|
||||
app:srcCompat="@drawable/ic_donate" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -399,7 +399,7 @@
|
|||
android:id="@+id/faqView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -411,7 +411,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_bug" />
|
||||
app:srcCompat="@drawable/ic_bug" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -436,7 +436,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -448,7 +448,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_info" />
|
||||
app:srcCompat="@drawable/ic_info" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -481,7 +481,7 @@
|
|||
android:id="@+id/installerSupportView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -493,7 +493,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_help" />
|
||||
app:srcCompat="@drawable/ic_help" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
android:layout_height="128dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/ic_warning"
|
||||
app:srcCompat="@drawable/ic_warning"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/ic_launcher_foreground" />
|
||||
app:srcCompat="@drawable/ic_launcher_foreground" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
android:layout_marginEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
app:cardBackgroundColor="#4CAF50"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardElevation="8dp">
|
||||
|
|
@ -76,8 +76,8 @@
|
|||
android:layout_height="28dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/Activated"
|
||||
android:src="@drawable/ic_check_circle"
|
||||
android:tint="@android:color/white" />
|
||||
android:tint="@android:color/white"
|
||||
app:srcCompat="@drawable/ic_check_circle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/activity_main_status_title"
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
android:layout_marginEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
app:cardCornerRadius="8dp">
|
||||
|
||||
<RelativeLayout
|
||||
|
|
@ -128,7 +128,7 @@
|
|||
android:layout_height="28dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/Modules"
|
||||
android:src="@drawable/ic_apps" />
|
||||
app:srcCompat="@drawable/ic_apps" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/activity_main_modules_title"
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
android:layout_marginEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
app:cardCornerRadius="8dp">
|
||||
|
||||
<RelativeLayout
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
android:layout_height="28dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/Downloads"
|
||||
android:src="@drawable/ic_get_app" />
|
||||
app:srcCompat="@drawable/ic_get_app" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/activity_main_downloads_title"
|
||||
|
|
@ -207,7 +207,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
|
|
@ -219,7 +219,7 @@
|
|||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@string/Apps"
|
||||
android:src="@drawable/outline_list_24" />
|
||||
app:srcCompat="@drawable/outline_list_24" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -234,7 +234,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@string/Logs"
|
||||
android:src="@drawable/ic_assignment" />
|
||||
app:srcCompat="@drawable/ic_assignment" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -261,7 +261,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
|
|
@ -273,7 +273,7 @@
|
|||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@string/Settings"
|
||||
android:src="@drawable/ic_settings" />
|
||||
app:srcCompat="@drawable/ic_settings" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -288,7 +288,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="horizontal"
|
||||
|
|
@ -300,7 +300,7 @@
|
|||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@string/About"
|
||||
android:src="@drawable/ic_info" />
|
||||
app:srcCompat="@drawable/ic_info" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||
android:textAppearance="?attr/textAppearanceListItem"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -32,6 +32,7 @@
|
|||
android:layout_below="@id/description"
|
||||
android:layout_alignStart="@id/description"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:minHeight="?attr/listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:padding="8dp"
|
||||
android:paddingEnd="12dp">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:minHeight="?attr/listPreferredItemHeight"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="11dp"
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/ic_info"
|
||||
app:srcCompat="@drawable/ic_info"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/ic_warning"
|
||||
app:srcCompat="@drawable/ic_warning"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/ic_warning"
|
||||
app:srcCompat="@drawable/ic_warning"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -166,7 +166,7 @@
|
|||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/ic_info"
|
||||
app:srcCompat="@drawable/ic_info"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<Button
|
||||
|
|
@ -187,7 +187,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/container"
|
||||
android:layout_marginTop="4dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -199,7 +199,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_person"
|
||||
app:srcCompat="@drawable/ic_person"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -228,7 +228,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/author_view"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -240,7 +240,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_help"
|
||||
app:srcCompat="@drawable/ic_help"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/show_on_xda"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -280,7 +280,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_description"
|
||||
app:srcCompat="@drawable/ic_description"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -307,7 +307,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/updateDescription"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_info"
|
||||
app:srcCompat="@drawable/ic_info"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -25,7 +26,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -37,7 +38,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_modules"
|
||||
app:srcCompat="@drawable/ic_modules"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -64,7 +65,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -76,7 +77,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_framework"
|
||||
app:srcCompat="@drawable/ic_framework"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -103,7 +104,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -115,7 +116,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_manager"
|
||||
app:srcCompat="@drawable/ic_manager"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -141,7 +142,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -153,7 +154,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_android"
|
||||
app:srcCompat="@drawable/ic_android"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -178,7 +179,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -190,7 +191,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_phone"
|
||||
app:srcCompat="@drawable/ic_phone"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -214,7 +215,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -226,7 +227,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_chip"
|
||||
app:srcCompat="@drawable/ic_chip"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -250,7 +251,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -261,7 +262,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_verified"
|
||||
app:srcCompat="@drawable/ic_verified"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -311,7 +312,7 @@
|
|||
android:id="@+id/click_to_update"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_vertical"
|
||||
|
|
@ -323,7 +324,7 @@
|
|||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_update"
|
||||
app:srcCompat="@drawable/ic_update"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
</style>
|
||||
|
||||
<style name="AppearanceFoundation.Caption" parent="TextAppearance.AppCompat.Caption">
|
||||
<item name="android:fontFamily">@font/exo</item>
|
||||
<item name="fontFamily">@font/exo</item>
|
||||
<item name="android:textColor">?attr/colorOnSurface</item>
|
||||
</style>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ buildscript {
|
|||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.3'
|
||||
classpath 'com.android.tools.build:gradle:3.6.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#Mon Feb 03 10:33:02 CST 2020
|
||||
#Fri Feb 28 11:16:16 CST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
|
||||
|
|
|
|||
Loading…
Reference in New Issue