import com.farmerbb.taskbar.BuildConfig;
import com.farmerbb.taskbar.R;
+import com.farmerbb.taskbar.util.U;
public class ImportSettingsActivity extends Activity {
private BroadcastReceiver settingsReceivedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- Intent restartIntent = new Intent(ImportSettingsActivity.this, MainActivity.class);
- restartIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(restartIntent);
- overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
-
- System.exit(0);
+ U.restartApp(ImportSettingsActivity.this, true);
}
};
if(savedInstanceState == null) {
U.initPrefs(this);
- if(!getIntent().hasExtra("theme_change"))
+ File restoreInProgress = new File(getFilesDir(), "restore_in_progress");
+ File restoreSuccessful = new File(getFilesDir(), "restore_successful");
+
+ if(restoreInProgress.exists() || restoreSuccessful.exists()) {
+ if(restoreInProgress.exists()) {
+ U.showToastLong(this, R.string.tb_restore_failed);
+ restoreInProgress.delete();
+ }
+
+ if(restoreSuccessful.exists()) {
+ U.showToast(this, R.string.tb_restore_successful);
+ restoreSuccessful.delete();
+ }
+
+ getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new ManageAppDataFragment(), "ManageAppDataFragment").commit();
+ } else if(!getIntent().hasExtra("theme_change"))
getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AboutFragment(), "AboutFragment").commit();
else
getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new AppearanceFragment(), "AppearanceFragment").commit();
import androidx.appcompat.app.AppCompatActivity;
import com.farmerbb.taskbar.R;
-import com.farmerbb.taskbar.activity.MainActivity;
import com.farmerbb.taskbar.backup.BackupUtils;
import com.farmerbb.taskbar.backup.JSONBackupAgent;
+import com.farmerbb.taskbar.util.U;
-import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
case "backup_settings":
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
- intent.setType("*/*");
+ intent.setType("application/octet-stream");
intent.putExtra(Intent.EXTRA_TITLE, "Taskbar-" + dateFormat.format(new Date()) + ".bak");
try {
startActivityForResult(intent, EXPORT);
} catch (ActivityNotFoundException e) {
- // TODO
+ U.showToastLong(getActivity(), R.string.tb_backup_restore_not_available);
}
break;
case "restore_settings":
Intent intent2 = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent2.addCategory(Intent.CATEGORY_OPENABLE);
- intent2.setType("*/*");
+ intent2.setType("application/octet-stream");
try {
startActivityForResult(intent2, IMPORT);
} catch (ActivityNotFoundException e) {
- // TODO
+ U.showToastLong(getActivity(), R.string.tb_backup_restore_not_available);
}
break;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
- if(resultCode != Activity.RESULT_OK || resultData == null) return;
+ if(resultCode != Activity.RESULT_OK || resultData == null)
+ return;
if(requestCode == EXPORT)
exportData(resultData.getData());
- if(requestCode == IMPORT) {
+ if(requestCode == IMPORT)
importData(resultData.getData());
-
- Intent restartIntent = new Intent(getActivity(), MainActivity.class);
- restartIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(restartIntent);
- getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
-
- System.exit(0);
- }
}
private void exportData(Uri uri) {
}
output.close();
+
+ U.showToast(getActivity(), R.string.tb_backup_successful);
} catch (Exception e) {
- // TODO
+ U.showToastLong(getActivity(), R.string.tb_backup_failed);
}
}
private void importData(Uri uri) {
File importedFile = new File(getActivity().getFilesDir(), "temp.zip");
+ File statusFile = new File(getActivity().getFilesDir(), "restore_in_progress");
try {
+ statusFile.createNewFile();
+
InputStream is = getActivity().getContentResolver().openInputStream(uri);
byte[] zipData = new byte[is.available()];
ZipEntry backupJsonEntry = zipFile.getEntry("backup.json");
ZipEntry customImageEntry = zipFile.getEntry("tb_images/custom_image");
- if(backupJsonEntry != null) {
- byte[] data = new byte[(int) backupJsonEntry.getSize()];
- InputStream input = zipFile.getInputStream(backupJsonEntry);
- input.read(data);
- input.close();
-
- BackupUtils.restore(getActivity(), new JSONBackupAgent(new JSONObject(new String(data))));
+ if(backupJsonEntry == null) {
+ // Backup file is invalid; fail immediately
+ throw new Exception();
}
+ byte[] data = new byte[(int) backupJsonEntry.getSize()];
+ InputStream input = zipFile.getInputStream(backupJsonEntry);
+ input.read(data);
+ input.close();
+
+ BackupUtils.restore(getActivity(), new JSONBackupAgent(new JSONObject(new String(data))));
+
File imagesDir = new File(getActivity().getFilesDir(), "tb_images");
imagesDir.mkdirs();
if(customImage.exists()) customImage.delete();
if(customImageEntry != null) {
- byte[] data = new byte[(int) customImageEntry.getSize()];
- InputStream input = zipFile.getInputStream(customImageEntry);
+ data = new byte[(int) customImageEntry.getSize()];
+ input = zipFile.getInputStream(customImageEntry);
input.read(data);
input.close();
output.close();
}
}
+
+ statusFile.renameTo(new File(getActivity().getFilesDir(), "restore_successful"));
} catch (Exception e) {
- // TODO
+ // no-op
} finally {
importedFile.delete();
+ U.restartApp(getActivity(), false);
}
}
}
\ No newline at end of file
import android.accessibilityservice.AccessibilityService;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
+import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.AlertDialog;
import com.farmerbb.taskbar.activity.ContextMenuActivity;
import com.farmerbb.taskbar.activity.DummyActivity;
import com.farmerbb.taskbar.activity.InvisibleActivityFreeform;
+import com.farmerbb.taskbar.activity.MainActivity;
import com.farmerbb.taskbar.activity.TouchAbsorberActivity;
import com.farmerbb.taskbar.activity.dark.ContextMenuActivityDark;
import com.farmerbb.taskbar.service.DashboardService;
return getInstalledPackage(context, "com.android.tv.settings") != null
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.P;
}
+
+ public static void restartApp(Activity activity, boolean shouldFade) {
+ Intent restartIntent = new Intent(activity, MainActivity.class);
+ restartIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
+ activity.startActivity(restartIntent);
+
+ activity.overridePendingTransition(
+ shouldFade ? android.R.anim.fade_in : 0,
+ shouldFade ? android.R.anim.fade_out : 0
+ );
+
+ System.exit(0);
+ }
}
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">@string/tb_clear_pinned_apps</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>
<string name="tb_manage_app_data_description">Backup and restore settings, or reset per-app preferences</string>
<string name="tb_backup_settings">Backup settings to file…</string>
<string name="tb_restore_settings">Restore settings from file…</string>
+ <string name="tb_backup_successful">Backup successful</string>
+ <string name="tb_restore_successful">Restore successful</string>
+ <string name="tb_backup_failed">An error occurred when creating backup</string>
+ <string name="tb_restore_failed">An error occurred when restoring backup</string>
+ <string name="tb_backup_restore_not_available">Backup and restore is not available on this device</string>
<string name="tb_new_shortcut">Launch app</string>
<string name="tb_allow_freeform_mode">Launch app in freeform mode</string>