This commit is contained in:
NekoInverter 2020-02-28 19:06:44 +08:00
parent 642ea1090d
commit b32afc0787
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
31 changed files with 314 additions and 116 deletions

View File

@ -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>

View File

@ -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.

View File

@ -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()))

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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;

View 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")

View File

@ -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);
}

View File

@ -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;

View File

@ -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) {
}
}
}
}

View File

@ -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;

View File

@ -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());

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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">

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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