Commit 2ee22fd3 authored by topjohnwu's avatar topjohnwu

Add restore stock image feature

parent 4c230d9e
package com.topjohnwu.magisk.adapters; package com.topjohnwu.magisk.adapters;
import android.app.Activity;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
...@@ -92,7 +93,7 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder ...@@ -92,7 +93,7 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder
dbHelper.updatePolicy(policy); dbHelper.updatePolicy(policy);
} }
}); });
holder.delete.setOnClickListener(v -> new AlertDialogBuilder(v.getContext()) holder.delete.setOnClickListener(v -> new AlertDialogBuilder((Activity) v.getContext())
.setTitle(R.string.su_revoke_title) .setTitle(R.string.su_revoke_title)
.setMessage(v.getContext().getString(R.string.su_revoke_msg, policy.appName)) .setMessage(v.getContext().getString(R.string.su_revoke_msg, policy.appName))
.setPositiveButton(R.string.yes, (dialog, which) -> { .setPositiveButton(R.string.yes, (dialog, which) -> {
......
...@@ -100,7 +100,7 @@ public class ReposAdapter extends SectionedAdapter<ReposAdapter.SectionHolder, R ...@@ -100,7 +100,7 @@ public class ReposAdapter extends SectionedAdapter<ReposAdapter.SectionHolder, R
holder.downloadImage.setOnClickListener(v -> { holder.downloadImage.setOnClickListener(v -> {
String filename = repo.getName() + "-" + repo.getVersion() + ".zip"; String filename = repo.getName() + "-" + repo.getVersion() + ".zip";
new AlertDialogBuilder(context) new AlertDialogBuilder((Activity) context)
.setTitle(context.getString(R.string.repo_install_title, repo.getName())) .setTitle(context.getString(R.string.repo_install_title, repo.getName()))
.setMessage(context.getString(R.string.repo_install_msg, filename)) .setMessage(context.getString(R.string.repo_install_msg, filename))
.setCancelable(true) .setCancelable(true)
......
package com.topjohnwu.magisk.asyncs;
import android.content.Context;
import android.widget.Toast;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.utils.Utils;
import java.util.List;
public class RestoreStockBoot extends ParallelTask<Void, Void, Boolean> {
private String mBoot;
public RestoreStockBoot(Context context, String boot) {
super(context);
mBoot = boot;
}
@Override
protected Boolean doInBackground(Void... voids) {
List<String> ret = getShell().su("cat /init.magisk.rc | grep STOCKSHA1");
if (!Utils.isValidShellResponse(ret))
return false;
String stock_boot = "/data/stock_boot_" + ret.get(0).substring(ret.get(0).indexOf('=') + 1) + ".img.gz";
if (!Utils.itemExist(getShell(), stock_boot))
return false;
getShell().su_raw("gzip -d < " + stock_boot + " | cat - /dev/zero | dd of=" + mBoot + " bs=4096");
return true;
}
@Override
protected void onPostExecute(Boolean result) {
if (result) {
getMagiskManager().toast(R.string.restore_done, Toast.LENGTH_SHORT);
} else {
getMagiskManager().toast(R.string.restore_fail, Toast.LENGTH_LONG);
}
}
}
package com.topjohnwu.magisk.components; package com.topjohnwu.magisk.components;
import android.content.Context; import android.app.Activity;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
...@@ -37,12 +37,12 @@ public class AlertDialogBuilder extends AlertDialog.Builder { ...@@ -37,12 +37,12 @@ public class AlertDialogBuilder extends AlertDialog.Builder {
private AlertDialog dialog; private AlertDialog dialog;
public AlertDialogBuilder(@NonNull Context context) { public AlertDialogBuilder(@NonNull Activity context) {
super(context); super(context);
setup(); setup();
} }
public AlertDialogBuilder(@NonNull Context context, @StyleRes int themeResId) { public AlertDialogBuilder(@NonNull Activity context, @StyleRes int themeResId) {
super(context, themeResId); super(context, themeResId);
setup(); setup();
} }
......
package com.topjohnwu.magisk.components; package com.topjohnwu.magisk.components;
import android.content.Intent;
import com.topjohnwu.magisk.MagiskManager; import com.topjohnwu.magisk.MagiskManager;
import com.topjohnwu.magisk.utils.Shell; import com.topjohnwu.magisk.utils.Shell;
import com.topjohnwu.magisk.utils.Topic; import com.topjohnwu.magisk.utils.Topic;
...@@ -7,6 +9,8 @@ import com.topjohnwu.magisk.utils.Utils; ...@@ -7,6 +9,8 @@ import com.topjohnwu.magisk.utils.Utils;
public class Fragment extends android.support.v4.app.Fragment { public class Fragment extends android.support.v4.app.Fragment {
private ActivityResultListener activityResultListener;
public MagiskManager getApplication() { public MagiskManager getApplication() {
return Utils.getMagiskManager(getActivity()); return Utils.getMagiskManager(getActivity());
} }
...@@ -30,4 +34,20 @@ public class Fragment extends android.support.v4.app.Fragment { ...@@ -30,4 +34,20 @@ public class Fragment extends android.support.v4.app.Fragment {
} }
super.onPause(); super.onPause();
} }
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (activityResultListener != null)
activityResultListener.onActivityResult(requestCode, resultCode, data);
activityResultListener = null;
}
public void startActivityForResult(Intent intent, int requestCode, ActivityResultListener listener) {
activityResultListener = listener;
super.startActivityForResult(intent, requestCode);
}
public interface ActivityResultListener {
void onActivityResult(int requestCode, int resultCode, Intent data);
}
} }
...@@ -399,7 +399,7 @@ ...@@ -399,7 +399,7 @@
android:id="@+id/imageView" android:id="@+id/imageView"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="20dp" android:layout_marginEnd="5dp"
android:layout_weight="0" android:layout_weight="0"
app:srcCompat="@mipmap/ic_launcher" /> app:srcCompat="@mipmap/ic_launcher" />
...@@ -419,7 +419,7 @@ ...@@ -419,7 +419,7 @@
<FrameLayout <FrameLayout
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="20dp" android:layout_marginStart="5dp"
android:layout_weight="0"> android:layout_weight="0">
</FrameLayout> </FrameLayout>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">إلغاء التثبيت</string> <string name="uninstall">إلغاء التثبيت</string>
<string name="reboot_countdown">إعادة التشغيل في %1$d</string> <string name="reboot_countdown">إعادة التشغيل في %1$d</string>
<string name="uninstall_magisk_title">إلغاء تثبيت Magisk</string> <string name="uninstall_magisk_title">إلغاء تثبيت Magisk</string>
<string name="uninstall_magisk_msg">سيؤدي هذا إلى إزالة جميع الإضافات، MagiskSU، وربما تشفير البيانات الخاصة بك إذا لم يتم تشفيرها\nهل أنت متأكد من الاستمرار؟</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(لم يتم توفير أي معلومات)</string> <string name="no_info_provided">(لم يتم توفير أي معلومات)</string>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<string name="uninstall">Odinstalovat</string> <string name="uninstall">Odinstalovat</string>
<string name="reboot_countdown">Restart za %1$d</string> <string name="reboot_countdown">Restart za %1$d</string>
<string name="uninstall_magisk_title">Odinstalovat Magisk</string> <string name="uninstall_magisk_title">Odinstalovat Magisk</string>
<string name="uninstall_magisk_msg">Tímto odstraníte veškeré moduly, MagiskSU a potencionálně zašifrujete svá data pokud ještě nejsou\nOpravdu chcete pokračovat?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(Žádné info)</string> <string name="no_info_provided">(Žádné info)</string>
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
<string name="uninstall">Deinstallieren</string> <string name="uninstall">Deinstallieren</string>
<string name="reboot_countdown">Neustart in %1$d</string> <string name="reboot_countdown">Neustart in %1$d</string>
<string name="uninstall_magisk_title">Magisk deinstallieren</string> <string name="uninstall_magisk_title">Magisk deinstallieren</string>
<string name="uninstall_magisk_msg">Dies entfernt alle Module, MagiskSU und verschlüsselt unter Umständen deine Daten, falls nicht bereits verschlüsselt.\nMöchtest du wirklich fortfahren?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(Nichts angegeben)</string> <string name="no_info_provided">(Nichts angegeben)</string>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
<string name="uninstall">Απεγκατάσταση</string> <string name="uninstall">Απεγκατάσταση</string>
<string name="reboot_countdown">Επανεκκίνηση σε %1$d</string> <string name="reboot_countdown">Επανεκκίνηση σε %1$d</string>
<string name="uninstall_magisk_title">Απεγκατάσταση Magisk</string> <string name="uninstall_magisk_title">Απεγκατάσταση Magisk</string>
<string name="uninstall_magisk_msg">Αυτό θα αφαιρέσει όλες τις ενότητες, το MagiskSU και πιθανόν να κρυπτογραφήσει τα δεδομένα σας αν δεν είναι κρυπτογραφυμένα\nΕίστε σίγουρος/η ότι θέλετε να συνεχίσετε;</string>
<string name="update">Ενημέρωση %1$s</string> <string name="update">Ενημέρωση %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="reboot_countdown">Reiniciando en %1$d</string> <string name="reboot_countdown">Reiniciando en %1$d</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string> <string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="uninstall_magisk_msg">Esto eliminará todos los módulos, MagiskSU, y potencialmente puede cifrar sus datos si no está encriptada\nEstas seguro de continuar?</string>
<string name="update">Actualización %1$s</string> <string name="update">Actualización %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
<string name="uninstall">Désinstaller</string> <string name="uninstall">Désinstaller</string>
<string name="reboot_countdown">Redémarrage dans %1$d</string> <string name="reboot_countdown">Redémarrage dans %1$d</string>
<string name="uninstall_magisk_title">Désinstaller Magisk</string> <string name="uninstall_magisk_title">Désinstaller Magisk</string>
<string name="uninstall_magisk_msg">Cela va supprimer tous les modules, MagiskSU et éventuellement chiffrer vos données si vous n\'êtes pas chiffré\nÊtes-vous sûr de vouloir continuer ?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(Aucune information transmise)</string> <string name="no_info_provided">(Aucune information transmise)</string>
<string name="no_modules_found">Aucun module trouvé</string> <string name="no_modules_found">Aucun module trouvé</string>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">Disinstalla</string> <string name="uninstall">Disinstalla</string>
<string name="reboot_countdown">Riavvio tra %1$d</string> <string name="reboot_countdown">Riavvio tra %1$d</string>
<string name="uninstall_magisk_title">Disinstalla Magisk</string> <string name="uninstall_magisk_title">Disinstalla Magisk</string>
<string name="uninstall_magisk_msg">Questo rimuoverà tutti i moduli, MagiskSU, e potenzialmente crittograferà i dati, se non crittografati/nVuoi continuare?</string>
<string name="update">Aggiorna %1$s</string> <string name="update">Aggiorna %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<string name="uninstall">アンインストール</string> <string name="uninstall">アンインストール</string>
<string name="reboot_countdown">%1$dで再起動します</string> <string name="reboot_countdown">%1$dで再起動します</string>
<string name="uninstall_magisk_title">Magiskをアンインストールします</string> <string name="uninstall_magisk_title">Magiskをアンインストールします</string>
<string name="uninstall_magisk_msg">これにより、すべてのモジュールとMagiskSUを削除します。暗号化されていないデータが暗号化される可能性があります。\ n続行しますか?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(情報がありません)</string> <string name="no_info_provided">(情報がありません)</string>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<string name="uninstall">제거</string> <string name="uninstall">제거</string>
<string name="reboot_countdown">%1$d초 안에 다시 시작됨</string> <string name="reboot_countdown">%1$d초 안에 다시 시작됨</string>
<string name="uninstall_magisk_title">Magisk 제거</string> <string name="uninstall_magisk_title">Magisk 제거</string>
<string name="uninstall_magisk_msg">모든 모듈과 MagiskSU를 제거합니다. 또한 데이터가 암호화되어 있지 않은 경우 암호화될 가능성이 있습니다.\n정말 계속하시겠습니까?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(제공된 정보 없음)</string> <string name="no_info_provided">(제공된 정보 없음)</string>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">Deïnstalleren</string> <string name="uninstall">Deïnstalleren</string>
<string name="reboot_countdown">Herstarten in %1$d</string> <string name="reboot_countdown">Herstarten in %1$d</string>
<string name="uninstall_magisk_title">Magisk deïnstalleren</string> <string name="uninstall_magisk_title">Magisk deïnstalleren</string>
<string name="uninstall_magisk_msg">Dit verwijdert alle modules, MagiskSU, en versleutelt mogelijk alle niet-versleutelde data\nZeker weten voortzetten?</string>
<string name="update">Bijwerken %1$s</string> <string name="update">Bijwerken %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
<string name="uninstall">Odinstaluj</string> <string name="uninstall">Odinstaluj</string>
<string name="reboot_countdown">Restartuj do %1$d</string> <string name="reboot_countdown">Restartuj do %1$d</string>
<string name="uninstall_magisk_title">Odinstaluj Magisk</string> <string name="uninstall_magisk_title">Odinstaluj Magisk</string>
<string name="uninstall_magisk_msg">Spowoduje to usunięcie wszystkich modułów, MagiskSU i potencjalnie szyfrowanie danych jeśli nie były szyfrowane \ nCzy na pewno kontynuować?</string>
<string name="update">Aktualizacja %1$s</string> <string name="update">Aktualizacja %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="reboot_countdown">Reiniciando em %1$d</string> <string name="reboot_countdown">Reiniciando em %1$d</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string> <string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="uninstall_magisk_msg">Isso removerá todos os módulos, MagiskSU, e Potencialmente criptografar seus dados se não criptografados\nVocê deseja continuar?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(Nenhuma informação fornecida)</string> <string name="no_info_provided">(Nenhuma informação fornecida)</string>
......
...@@ -38,8 +38,6 @@ ...@@ -38,8 +38,6 @@
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="reboot_countdown">A reiniciar em %1$d</string> <string name="reboot_countdown">A reiniciar em %1$d</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string> <string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="uninstall_magisk_msg">Isso irá remover todos os módulos, MagiskSU, e Potencialmente encriptar seus dados se estiverem encriptados
\nDeseja continuar?</string>
<string name="update">Atualizar %1$s</string> <string name="update">Atualizar %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
<string name="uninstall">Dezinstalare</string> <string name="uninstall">Dezinstalare</string>
<string name="reboot_countdown">Repornire în %1$d</string> <string name="reboot_countdown">Repornire în %1$d</string>
<string name="uninstall_magisk_title">Dezinstalare Magisk</string> <string name="uninstall_magisk_title">Dezinstalare Magisk</string>
<string name="uninstall_magisk_msg">Aceasta va elimina toate modulele, MagiskSU, şi potențial să cripteze datele, dacă nu sunt criptate\nContinuaţi?</string>
<string name="update">Actualizare %1$s</string> <string name="update">Actualizare %1$s</string>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">Удалить</string> <string name="uninstall">Удалить</string>
<string name="reboot_countdown">Перезагрузка через %1$d</string> <string name="reboot_countdown">Перезагрузка через %1$d</string>
<string name="uninstall_magisk_title">Удалить Magisk</string> <string name="uninstall_magisk_title">Удалить Magisk</string>
<string name="uninstall_magisk_msg">Данное действие приведет к удалению всех модулей, MagiskSU, и может зашифровать данные, если они не зашифрованы.\nУверены, что желаете продолжить?</string>
<string name="update">Обновить %1$s</string> <string name="update">Обновить %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">Avinstallera</string> <string name="uninstall">Avinstallera</string>
<string name="reboot_countdown">Omstart om %1$d</string> <string name="reboot_countdown">Omstart om %1$d</string>
<string name="uninstall_magisk_title">Avinstallera Magisk</string> <string name="uninstall_magisk_title">Avinstallera Magisk</string>
<string name="uninstall_magisk_msg">Detta kommer att ta bort alla moduler, MagiskSU, och potentiellt kryptera din data om inte krypterad\nÄr det säker du vill fortsätta?</string>
<string name="update">Uppdatera %1$s</string> <string name="update">Uppdatera %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
<string name="uninstall">Kaldır</string> <string name="uninstall">Kaldır</string>
<string name="reboot_countdown">%1$d saniye içinde yeniden başlatılacak</string> <string name="reboot_countdown">%1$d saniye içinde yeniden başlatılacak</string>
<string name="uninstall_magisk_title">"Magisk\'i kaldır"</string> <string name="uninstall_magisk_title">"Magisk\'i kaldır"</string>
<string name="uninstall_magisk_msg">"Bu, tüm modülleri, MagiskSU\'yu kaldıracak ve şifrelenmemişse verilerinizi potansiyel olarak şifreleyecektir\nDevam etmek istediğinize emin misiniz?"</string>
<string name="update">Güncelle %1$s</string> <string name="update">Güncelle %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
<string name="uninstall">Видалити</string> <string name="uninstall">Видалити</string>
<string name="reboot_countdown">Перезавантаження через %1$d</string> <string name="reboot_countdown">Перезавантаження через %1$d</string>
<string name="uninstall_magisk_title">Видалити Magisk</string> <string name="uninstall_magisk_title">Видалити Magisk</string>
<string name="uninstall_magisk_msg">Ця дія призведе до видалення всіх модулів, MagiskSU, і може зашифрувати дані, якщо вони не зашифровані.\nВпевнені, що бажаєте продовжити?</string>
<string name="update">Оновити %1$s</string> <string name="update">Оновити %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
<string name="uninstall">Gỡ bỏ</string> <string name="uninstall">Gỡ bỏ</string>
<string name="reboot_countdown">Khởi động lại trong %1$d</string> <string name="reboot_countdown">Khởi động lại trong %1$d</string>
<string name="uninstall_magisk_title">Gỡ bỏ Magisk</string> <string name="uninstall_magisk_title">Gỡ bỏ Magisk</string>
<string name="uninstall_magisk_msg">Việc này sẽ xoá tất cả các mô-đun, MagiskSU và có khả năng sẽ mã hoá dữ liệu nếu chưa được mã hoá\nBạn chắc muốn tiếp tục?</string>
<!--Module Fragment--> <!--Module Fragment-->
<string name="no_info_provided">(Không có thông tin được cung cấp)</string> <string name="no_info_provided">(Không có thông tin được cung cấp)</string>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
<string name="uninstall">卸载</string> <string name="uninstall">卸载</string>
<string name="reboot_countdown">将在 %1$d 后重启</string> <string name="reboot_countdown">将在 %1$d 后重启</string>
<string name="uninstall_magisk_title">卸载 Magisk</string> <string name="uninstall_magisk_title">卸载 Magisk</string>
<string name="uninstall_magisk_msg">将会删除所有模块及 MagiskSU,并有可能在目前未加密的情况下加密你的数据\n你确定要继续吗?</string>
<string name="update">更新 %1$s</string> <string name="update">更新 %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
......
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
<string name="download">下載</string> <string name="download">下載</string>
<string name="zip_process_title">處理中</string> <string name="zip_process_title">處理中</string>
<string name="uninstall_magisk_title">解除安裝 Magisk</string> <string name="uninstall_magisk_title">解除安裝 Magisk</string>
<string name="uninstall_magisk_msg">這將會刪除所有模組,MagiskSU,並有可能在目前資料未加密的情況下進行加密\n你確定要繼續嗎?</string> <string name="uninstall_magisk_msg">所有模組將會被停用 / 刪除。root會被移除,並有可能在目前資料未加密的情況下被加密</string>
<string name="manual_boot_image">請手動選取 boot 映像位置</string> <string name="manual_boot_image">請手動選取 boot 映像位置</string>
<string name="cannot_auto_detect">(無法自動偵測)</string> <string name="cannot_auto_detect">(無法自動偵測)</string>
<string name="settings_notification_summary">有更新的時候顯示通知</string> <string name="settings_notification_summary">有更新的時候顯示通知</string>
...@@ -208,5 +208,9 @@ ...@@ -208,5 +208,9 @@
<string name="zip_download_title">正在下載</string> <string name="zip_download_title">正在下載</string>
<string name="zip_download_msg">正在下載 Zip 文件 …</string> <string name="zip_download_msg">正在下載 Zip 文件 …</string>
<string name="settings_boot_format_summary">選擇已補丁 Boot 映像文件輸出格式\n若要透過 fastboot/download 模式刷入,請選擇 .img 格式;若要透過 ODIN 刷入,則選擇 .img.tar\n</string> <string name="settings_boot_format_summary">選擇已補丁 Boot 映像文件輸出格式\n若要透過 fastboot/download 模式刷入,請選擇 .img 格式;若要透過 ODIN 刷入,則選擇 .img.tar\n</string>
<string name="complete_uninstall">完全解除安裝</string>
<string name="restore_stock_boot">還原原廠 boot 映像</string>
<string name="restore_done">還原完成!</string>
<string name="restore_fail">原廠 boot 映像備份不存在!</string>
</resources> </resources>
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<string name="uninstall">Uninstall</string> <string name="uninstall">Uninstall</string>
<string name="reboot_countdown">Rebooting in %1$d</string> <string name="reboot_countdown">Rebooting in %1$d</string>
<string name="uninstall_magisk_title">Uninstall Magisk</string> <string name="uninstall_magisk_title">Uninstall Magisk</string>
<string name="uninstall_magisk_msg">This will remove all modules, MagiskSU, and potentially encrypt your data if not encrypted\nAre you sure to continue?</string> <string name="uninstall_magisk_msg">All modules will be disabled/removed. Root will be removed, and potentially encrypt your data if your data is not currently encrypted</string>
<string name="update">Update %1$s</string> <string name="update">Update %1$s</string>
<!--Module Fragment--> <!--Module Fragment-->
...@@ -116,6 +116,10 @@ ...@@ -116,6 +116,10 @@
<string name="direct_install">Direct Install (Recommend)</string> <string name="direct_install">Direct Install (Recommend)</string>
<string name="select_method">Select Method</string> <string name="select_method">Select Method</string>
<string name="no_boot_file_patch_support">Target Magisk version doesn\'t support boot image file patching</string> <string name="no_boot_file_patch_support">Target Magisk version doesn\'t support boot image file patching</string>
<string name="complete_uninstall">Complete Uninstall</string>
<string name="restore_stock_boot">Restore Stock Boot</string>
<string name="restore_done">Restoration done!</string>
<string name="restore_fail">Stock backup does not exist!</string>
<!--Settings Activity --> <!--Settings Activity -->
<string name="settings_general_category">General</string> <string name="settings_general_category">General</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment