diff --git a/app/build.gradle b/app/build.gradle index ba9de8bdb..4117f808a 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { implementation 'androidx.preference:preference:1.2.0' implementation 'com.github.ozodrukh:CircularReveal:1.3.1' implementation 'com.github.sunilpaulmathew:sCommon:b293ec9813' - implementation 'com.github.sunilpaulmathew:RootFilePicker:e8a410b248' + implementation 'com.github.sunilpaulmathew:RootFilePicker:c918e8fad0' implementation 'com.github.topjohnwu.libsu:core:4.0.3' implementation "com.github.topjohnwu.libsu:io:3.1.2" implementation 'com.google.android.apps.dashclock:dashclock-api:2.0.0' diff --git a/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileActivity.java b/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileActivity.java index 496476276..3c5fc92cb 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileActivity.java +++ b/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileActivity.java @@ -19,6 +19,7 @@ */ package com.smartpack.kernelmanager.activities.tools.profile; +import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; @@ -186,7 +187,7 @@ private void returnIntent(LinkedHashMap commandsList) { intent.putExtra(POSITION_INTENT, mProfilePosition); intent.putExtra(RESULT_ID_INTENT, ids); intent.putExtra(RESULT_COMMAND_INTENT, commands); - setResult(0, intent); + setResult(Activity.RESULT_OK, intent); finish(); } else { Utils.snackbar(findViewById(android.R.id.content), getString(R.string.no_changes)); diff --git a/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileEditActivity.java b/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileEditActivity.java index da01aec29..36c305e09 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileEditActivity.java +++ b/app/src/main/java/com/smartpack/kernelmanager/activities/tools/profile/ProfileEditActivity.java @@ -19,6 +19,7 @@ */ package com.smartpack.kernelmanager.activities.tools.profile; +import android.app.Activity; import android.content.Intent; import android.os.Bundle; @@ -79,7 +80,7 @@ private Fragment getFragment() { @Override public void finish() { if (sChanged) { - setResult(0, new Intent()); + setResult(Activity.RESULT_OK, new Intent()); } sChanged = false; super.finish(); diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/kernel/KLapseFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/kernel/KLapseFragment.java index 3b5d22fd7..0ea4c9172 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/kernel/KLapseFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/kernel/KLapseFragment.java @@ -41,6 +41,7 @@ import com.smartpack.kernelmanager.views.recyclerview.SelectView; import com.smartpack.kernelmanager.views.recyclerview.SwitchView; +import java.io.File; import java.util.List; import in.sunilpaulmathew.sCommon.Utils.sExecutor; @@ -471,7 +472,7 @@ private void showCreateDialog() { if (text.contains(" ")) { text = text.replace(" ", "_"); } - if (Utils.existFile(KLapse.profileFolder() + "/" + text)) { + if (Utils.existFile(KLapse.profileFolder(requireActivity()) + "/" + text)) { Utils.snackbar(getRootView(), getString(R.string.profile_exists, text)); return; } @@ -485,25 +486,22 @@ public void onPreExecute() { } @Override public void doInBackground() { - KLapse.prepareProfileFolder(); - Utils.create("#!/system/bin/sh\n\n# Created by SmartPack-Kernel Manager", KLapse.profileFolder() + "/" + path); - if (KLapse.supported()) { - Utils.append("\n# K-lapse", KLapse.profileFolder() + "/" + path); - for (int i = 0; i < KLapse.size(); i++) { - KLapse.exportKlapseSettings(path, i); - } + if (KLapse.profileFolder(requireActivity()).exists()) { + KLapse.profileFolder(requireActivity()).delete(); } - Utils.append("\n# The END\necho \"Profile applied successfully...\" | tee /dev/kmsg", KLapse.profileFolder() + "/" + path); + Utils.create(KLapse.klapseSettings(), new File(KLapse.profileFolder(requireActivity()), path).getAbsolutePath()); + Utils.prepareInternalDataStorage(); + Utils.copy(new File(KLapse.profileFolder(requireActivity()), path).getAbsolutePath(), Utils.getInternalDataStorage() + "/" + path); } @Override public void onPostExecute() { hideProgressMessage(); new Dialog(requireActivity()) - .setMessage(getString(R.string.profile_created, KLapse.profileFolder() + "/" + path)) + .setMessage(getString(R.string.profile_created, KLapse.profileFolder(requireActivity()) + "/" + path)) .setCancelable(false) .setNegativeButton(getString(R.string.cancel), (dialog, id) -> { }) - .setPositiveButton(getString(R.string.share), (dialog, id) -> Utils.shareItem(getActivity(), path, KLapse.profileFolder() + "/" + path, getString(R.string.share_script) + .setPositiveButton(getString(R.string.share), (dialog, id) -> Utils.shareItem(getActivity(), path, Utils.getInternalDataStorage() + "/" + path, getString(R.string.share_script) + "\n\n" + getString(R.string.share_app_message, BuildConfig.VERSION_NAME))) .show(); } diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/BackupFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/BackupFragment.java index 157c8c632..160acb8f4 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/BackupFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/BackupFragment.java @@ -19,6 +19,7 @@ */ package com.smartpack.kernelmanager.fragments.tools; +import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.graphics.drawable.Drawable; @@ -229,12 +230,11 @@ protected void onTopFabClick() { showBackupFlashingDialog(null); break; case 1: - new FilePicker( - "img", - Environment.getExternalStorageDirectory().toString(), - ViewUtils.getThemeAccentColor(requireContext()), - flashImage, - requireActivity()).launch(); + FilePicker filePicker = new FilePicker(flashImage, requireActivity()); + filePicker.setExtension("img"); + filePicker.setPath(Environment.getExternalStorageDirectory().toString()); + filePicker.setAccentColor(ViewUtils.getThemeAccentColor(requireContext())); + filePicker.launch(); break; } }).setOnDismissListener(dialogInterface -> mOptionsDialog = null); @@ -379,7 +379,7 @@ private LinkedHashMap getPartitionMenu() { ActivityResultLauncher flashImage = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getData() != null && FilePicker.getSelectedFile().exists()) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null && FilePicker.getSelectedFile().exists()) { File mSelectedFile = FilePicker.getSelectedFile(); if (!Utils.getExtension(mSelectedFile.getAbsolutePath()).equals("img")) { Utils.snackbar(getRootView(), getString(R.string.wrong_extension, ".img")); diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/CustomControlsFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/CustomControlsFragment.java index bdd4985d7..0813cd05f 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/CustomControlsFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/CustomControlsFragment.java @@ -21,6 +21,7 @@ package com.smartpack.kernelmanager.fragments.tools; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Environment; @@ -148,9 +149,8 @@ private void switchItemsList(List items) { mDeleteDialog.show(); break; case 1: - Utils.shareItem(getActivity(), switchItems, CustomControls.switchFile() + "/" + - switchItems,getString(R.string.share_controller, CustomControls.switchFile()) + - " -> Import -> Switch'.\n\n" + getString(R.string.share_app_message, BuildConfig.VERSION_NAME)); + Utils.shareItem(getActivity(), switchItems, CustomControls.switchFile() + "/" + switchItems, getString(R.string.share_controller, + CustomControls.switchFile()) + " -> Import -> Switch'.\n\n" + getString(R.string.share_app_message, BuildConfig.VERSION_NAME)); break; } return false; @@ -195,9 +195,8 @@ private void genericItemsList(List items) { mDeleteDialog.show(); break; case 1: - Utils.shareItem(getActivity(), genericItems, CustomControls.genericFile() + - "/" + genericItems,getString(R.string.share_controller, CustomControls.genericFile()) + - " -> Import -> Generic'.\n\n" + getString(R.string.share_app_message, BuildConfig.VERSION_NAME)); + Utils.shareItem(getActivity(), genericItems, CustomControls.genericFile() + "/" + genericItems, getString(R.string.share_controller, + CustomControls.genericFile()) + " -> Import -> Generic'.\n\n" + getString(R.string.share_app_message, BuildConfig.VERSION_NAME)); break; } return false; @@ -256,19 +255,18 @@ protected void onTopFabClick() { private void createController(int controllerType, String path) { mControllerType = controllerType; - new FilePicker( - null, - path, - ViewUtils.getThemeAccentColor(requireContext()), - createController, - requireActivity()).launch(); + FilePicker filePicker = new FilePicker(createController, requireActivity()); + filePicker.setExtension(null); + filePicker.setPath(path); + filePicker.setAccentColor(ViewUtils.getThemeAccentColor(requireContext())); + filePicker.launch(); } @SuppressLint("StringFormatInvalid") ActivityResultLauncher createController = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getData() != null && FilePicker.getSelectedFile().exists()) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null && FilePicker.getSelectedFile().exists()) { File mSelectedFile = FilePicker.getSelectedFile(); if (mControllerType == -1) { return; diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ProfileFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ProfileFragment.java index 1f90b96e0..439707106 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ProfileFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ProfileFragment.java @@ -352,12 +352,11 @@ protected void onTopFabClick() { createProfile.launch(createProfileActivityIntent()); break; case 1: - new FilePicker( - "json", - Environment.getExternalStorageDirectory().toString(), - ViewUtils.getThemeAccentColor(requireContext()), - importProfile, - requireActivity()).launch(); + FilePicker filePicker = new FilePicker(importProfile, requireActivity()); + filePicker.setExtension("json"); + filePicker.setPath(Environment.getExternalStorageDirectory().toString()); + filePicker.setAccentColor(ViewUtils.getThemeAccentColor(requireContext())); + filePicker.launch(); break; } }).setOnDismissListener(dialogInterface -> mOptionsDialog = null); @@ -389,7 +388,7 @@ private Intent createProfileActivityIntent() { ActivityResultLauncher appendToProfile = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() != Activity.RESULT_OK && result.getData() != null) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { LinkedHashMap commandsList = new LinkedHashMap<>(); ArrayList ids = result.getData().getStringArrayListExtra(ProfileActivity.RESULT_ID_INTENT); ArrayList commands = result.getData().getStringArrayListExtra(ProfileActivity.RESULT_COMMAND_INTENT); @@ -419,7 +418,7 @@ private Intent createProfileActivityIntent() { ActivityResultLauncher createProfile = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() != Activity.RESULT_OK && result.getData() != null) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { LinkedHashMap commandsList = new LinkedHashMap<>(); ArrayList ids = result.getData().getStringArrayListExtra(ProfileActivity.RESULT_ID_INTENT); ArrayList commands = result.getData().getStringArrayListExtra(ProfileActivity.RESULT_COMMAND_INTENT); @@ -436,7 +435,7 @@ private Intent createProfileActivityIntent() { ActivityResultLauncher editProfile = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() != Activity.RESULT_OK && result.getData() != null) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { reload(); } } @@ -445,7 +444,7 @@ private Intent createProfileActivityIntent() { ActivityResultLauncher importProfile = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getData() != null && FilePicker.getSelectedFile().exists()) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null && FilePicker.getSelectedFile().exists()) { File mSelectedFile = FilePicker.getSelectedFile(); if (!Utils.getExtension(mSelectedFile.getAbsolutePath()).equals("json")) { Utils.snackbar(getRootView(), getString(R.string.wrong_extension, ".json")); diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ScriptMangerFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ScriptMangerFragment.java index ae9081367..95abf148c 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ScriptMangerFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/ScriptMangerFragment.java @@ -33,8 +33,8 @@ import com.smartpack.kernelmanager.BuildConfig; import com.smartpack.kernelmanager.R; import com.smartpack.kernelmanager.activities.ApplyScriptActivity; -import com.smartpack.kernelmanager.activities.ScriptEditorActivity; import com.smartpack.kernelmanager.activities.ForegroundActivity; +import com.smartpack.kernelmanager.activities.ScriptEditorActivity; import com.smartpack.kernelmanager.fragments.DescriptionFragment; import com.smartpack.kernelmanager.fragments.RecyclerViewFragment; import com.smartpack.kernelmanager.fragments.SwitcherFragment; diff --git a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/SmartPackFragment.java b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/SmartPackFragment.java index 89ee91f3c..6bbf552ea 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/SmartPackFragment.java +++ b/app/src/main/java/com/smartpack/kernelmanager/fragments/tools/SmartPackFragment.java @@ -22,6 +22,7 @@ package com.smartpack.kernelmanager.fragments.tools; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -518,19 +519,18 @@ public void onPostExecute() { @Override protected void onTopFabClick() { super.onTopFabClick(); - new FilePicker( - "zip", - Environment.getExternalStorageDirectory().toString(), - ViewUtils.getThemeAccentColor(requireContext()), - pickFileForFlashing, - requireActivity()).launch(); + FilePicker filePicker = new FilePicker(pickFileForFlashing, requireActivity()); + filePicker.setExtension("zip"); + filePicker.setPath(Environment.getExternalStorageDirectory().toString()); + filePicker.setAccentColor(ViewUtils.getThemeAccentColor(requireContext())); + filePicker.launch(); } @SuppressLint({"StringFormatInvalid", "StringFormatMatches"}) ActivityResultLauncher pickFileForFlashing = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getData() != null && FilePicker.getSelectedFile().exists()) { + if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null && FilePicker.getSelectedFile().exists()) { File mSelectedFile = FilePicker.getSelectedFile(); new Dialog(requireActivity()) .setIcon(R.mipmap.ic_launcher) diff --git a/app/src/main/java/com/smartpack/kernelmanager/utils/kernel/screen/KLapse.java b/app/src/main/java/com/smartpack/kernelmanager/utils/kernel/screen/KLapse.java index e68cc5e69..a2a090bc6 100644 --- a/app/src/main/java/com/smartpack/kernelmanager/utils/kernel/screen/KLapse.java +++ b/app/src/main/java/com/smartpack/kernelmanager/utils/kernel/screen/KLapse.java @@ -25,7 +25,6 @@ import com.smartpack.kernelmanager.R; import com.smartpack.kernelmanager.fragments.ApplyOnBootFragment; - import com.smartpack.kernelmanager.utils.Utils; import com.smartpack.kernelmanager.utils.root.Control; import com.topjohnwu.superuser.io.SuFile; @@ -33,6 +32,7 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * Created by sunilpaulmathew on March 5, 2019 @@ -335,40 +335,30 @@ private static String getAdjustedTime(String string) { "0" + timeMin : timeMin) + (timeHr > 12 ? " PM" : " AM"); } - private static final String[] KLAPSE_PROFILE = { - KLAPSE_ENABLE, KLAPSE_TARGET_R, KLAPSE_TARGET_G, KLAPSE_TARGET_B, - DAYTIME_R, DAYTIME_G, DAYTIME_B, KLAPSE_START_MIN, KLAPSE_END_MIN, KLAPSE_TARGET_MIN, - FADEBACK_MINUTES, DIMMER_FACTOR, DIMMER_FACTOR_AUTO, DIMMER_START, DIMMER_END, PULSE_FREQ, - FLOW_FREQ, BACKLIGHT_RANGE_UPPER, BACKLIGHT_RANGE_LOWER - }; - - public static File profileFolder() { - return SuFile.open(Utils.getInternalDataStorage(), "klapse/"); - } - - public static void prepareProfileFolder() { - if (profileFolder().exists() && profileFolder().isDirectory()) { - profileFolder().delete(); - } - profileFolder().mkdirs(); - } - - public static void exportKlapseSettings(String name, int position) { - prepareProfileFolder(); - String value = Utils.readFile(KLAPSE_PROFILE[position]); - if (value.contains("Y")) { - value = "1"; - } else if (value.contains("N")) { - value = "0"; - } - if (Utils.existFile(KLAPSE_PROFILE[position])) { - String command = "echo " + value + " > " + KLAPSE_PROFILE[position]; - Utils.append (command, profileFolder() + "/" + name); + public static File profileFolder(Context context) { + return context.getExternalFilesDir("klapse"); + } + + public static String klapseSettings() { + StringBuilder sb = new StringBuilder(); + sb.append("#!/system/bin/sh\n\n# Created by SmartPack-Kernel Manager"); + if (supported()) { + sb.append("\n# K-lapse"); + for (File file : Objects.requireNonNull(SuFile.open(KLAPSE).listFiles())) { + if (file.exists() && file.isFile() && !file.getName().equals("version")) { + String value = Utils.readFile(file.getAbsolutePath()); + if (value.contains("Y")) { + value = "1"; + } else if (value.contains("N")) { + value = "0"; + } + String command = "echo " + value + " > " + file.getAbsolutePath(); + sb.append(command); + } + } } - } - - public static int size() { - return KLAPSE_PROFILE.length; + sb.append("\n# The END | tee /dev/kmsg"); + return sb.toString(); } public static boolean supported() {