diff --git a/app/src/main/java/com/topjohnwu/magisk/MainActivity.java b/app/src/main/java/com/topjohnwu/magisk/MainActivity.java index 34d9d2254..48ada171f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MainActivity.java +++ b/app/src/main/java/com/topjohnwu/magisk/MainActivity.java @@ -18,6 +18,7 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; @@ -26,6 +27,7 @@ import android.view.View; import com.topjohnwu.magisk.utils.CallbackHandler; import com.topjohnwu.magisk.utils.Logger; +import com.topjohnwu.magisk.utils.Shell; import butterknife.BindView; import butterknife.ButterKnife; @@ -33,6 +35,8 @@ import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, CallbackHandler.EventListener { + public static AlertDialog.Builder alertBuilder = null; + private static final String SELECTED_ITEM_ID = "SELECTED_ITEM_ID"; private final Handler mDrawerHandler = new Handler(); @@ -54,6 +58,9 @@ public class MainActivity extends AppCompatActivity Logger.dev("MainActivity: Theme is " + theme); if (theme.equals("Dark")) { setTheme(R.style.AppTheme_dh); + alertBuilder = new AlertDialog.Builder(this, R.style.AlertDialog_dh); + } else { + alertBuilder = new AlertDialog.Builder(this); } super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); @@ -109,6 +116,7 @@ public class MainActivity extends AppCompatActivity protected void onDestroy() { super.onDestroy(); CallbackHandler.unRegister(StatusFragment.updateCheckDone, this); + alertBuilder = null; } @Override @@ -138,24 +146,16 @@ public class MainActivity extends AppCompatActivity @Override public void onTrigger(CallbackHandler.Event event) { Menu menu = navigationView.getMenu(); - if (StatusFragment.remoteMagiskVersion < 0) { - menu.findItem(R.id.install).setVisible(false); - } else { - menu.findItem(R.id.install).setVisible(true); - } + menu.findItem(R.id.install).setVisible(StatusFragment.remoteMagiskVersion > 0 && + Shell.rootAccess()); } private void checkHideSection() { Menu menu = navigationView.getMenu(); - if (StatusFragment.magiskVersion < 0) { - menu.findItem(R.id.magiskhide).setVisible(false); - menu.findItem(R.id.modules).setVisible(false); - menu.findItem(R.id.downloads).setVisible(false); - } else { - menu.findItem(R.id.modules).setVisible(true); - menu.findItem(R.id.downloads).setVisible(true); - menu.findItem(R.id.magiskhide).setVisible(prefs.getBoolean("magiskhide", false)); - } + menu.findItem(R.id.magiskhide).setVisible(StatusFragment.magiskVersion > 0 && + prefs.getBoolean("magiskhide", false) && Shell.rootAccess()); + menu.findItem(R.id.modules).setVisible(StatusFragment.magiskVersion > 0); + menu.findItem(R.id.downloads).setVisible(StatusFragment.magiskVersion > 0); } public void navigate(final int itemId) { diff --git a/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java b/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java index a238aa5f7..c81cca231 100644 --- a/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/StatusFragment.java @@ -60,8 +60,6 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis @BindColor(R.color.blue500) int colorInfo; @BindColor(android.R.color.transparent) int trans; - private AlertDialog.Builder builder; - static { checkMagiskInfo(); } @@ -72,15 +70,6 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis View v = inflater.inflate(R.layout.status_fragment, container, false); ButterKnife.bind(this, v); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - String theme = prefs.getString("theme", ""); - if (theme.equals("Dark")) { - builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialog_dh); - } else { - builder = new AlertDialog.Builder(getActivity()); - } - mSwipeRefreshLayout.setOnRefreshListener(() -> { magiskStatusContainer.setBackgroundColor(trans); magiskStatusIcon.setImageResource(0); @@ -106,7 +95,7 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis } if (magiskVersion < 0) { - builder + MainActivity.alertBuilder .setTitle(R.string.no_magisk_title) .setMessage(R.string.no_magisk_msg) .setCancelable(true) diff --git a/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java b/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java index c8f06a5ae..726ce47fb 100644 --- a/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java +++ b/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java @@ -9,6 +9,7 @@ import android.net.Uri; import android.widget.Toast; import com.topjohnwu.magisk.R; +import com.topjohnwu.magisk.utils.Utils; public abstract class DownloadReceiver extends BroadcastReceiver { public Context mContext; @@ -42,6 +43,7 @@ public abstract class DownloadReceiver extends BroadcastReceiver { } c.close(); } + Utils.isDownloading = false; } public void setDownloadID(long id) { diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java index 7c26fa4c7..529647fca 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java @@ -13,6 +13,7 @@ import android.util.Log; import android.widget.Toast; import com.topjohnwu.magisk.InstallFragment; +import com.topjohnwu.magisk.MainActivity; import com.topjohnwu.magisk.ModulesFragment; import com.topjohnwu.magisk.R; import com.topjohnwu.magisk.ReposFragment; @@ -256,19 +257,10 @@ public class Async { } protected void onSuccess() { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); - StatusFragment.updateCheckDone.trigger(); new LoadModules().exec(); - AlertDialog.Builder builder; - String theme = prefs.getString("theme", ""); - if (theme.equals("Dark")) { - builder = new AlertDialog.Builder(mContext, R.style.AlertDialog_dh); - } else { - builder = new AlertDialog.Builder(mContext); - } - builder + MainActivity.alertBuilder .setTitle(R.string.reboot_title) .setMessage(R.string.reboot_msg) .setPositiveButton(R.string.reboot, (dialogInterface1, i) -> Shell.sh("su -c reboot")) diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java index 7915f0d76..399ebbf88 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java @@ -33,6 +33,8 @@ import javax.crypto.spec.DESKeySpec; public class Utils { + public static boolean isDownloading = false; + private static final String cryptoPass = "MagiskRox666"; private static final String secret = "GTYybRBTYf5his9kQ16ZNO7qgkBJ/5MyVe4CGceAOIoXgSnnk8FTd4F1dE9p5Eus"; @@ -90,16 +92,25 @@ public class Utils { } public static void dlAndReceive(Context context, DownloadReceiver receiver, String link, String filename) { - File file = new File(Environment.getExternalStorageDirectory() + "/MagiskManager/" + filename); + if (isDownloading) { + return; + } + if (ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { Toast.makeText(context, R.string.permissionNotGranted, Toast.LENGTH_LONG).show(); return; } + File file = new File(Environment.getExternalStorageDirectory() + "/MagiskManager/" + filename); + if ((!file.getParentFile().exists() && !file.getParentFile().mkdirs()) || (file.exists() && !file.delete())) { Toast.makeText(context, R.string.permissionNotGranted, Toast.LENGTH_LONG).show(); + return; } + Toast.makeText(context, context.getString(R.string.downloading_toast, filename), Toast.LENGTH_LONG).show(); + isDownloading = true; + DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request(Uri.parse(link)); request.setDestinationUri(Uri.fromFile(file)); diff --git a/app/src/main/res/layout/status_fragment.xml b/app/src/main/res/layout/status_fragment.xml index 2d0663d59..b8e9a8ac6 100644 --- a/app/src/main/res/layout/status_fragment.xml +++ b/app/src/main/res/layout/status_fragment.xml @@ -163,8 +163,7 @@ android:id="@+id/safetyNet_icon" android:layout_width="84dp" android:layout_height="84dp" - android:layout_gravity="center" - android:src="@drawable/ic_check_circle"/> + android:layout_gravity="center"/> هل ترغب في تنزيل وتثبيت Magisk؟ - https://api.github.com/orgs/Magisk-Modules-Repo/repos?access_token= - https://raw.githubusercontent.com/Magisk-Modules-Repo/%1$s/master/%2$s - https://github.com/Magisk-Modules-Repo/%1$s/archive/master.zip عام diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aab44baee..bc8ed0a65 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -101,6 +101,7 @@ "Installing %1$s …" No Magisk Installed! Do you want to download and install Magisk? + Downloading %1$s https://api.github.com/orgs/Magisk-Modules-Repo/repos?access_token=%1$s