Fix crashes

This commit is contained in:
NekoInverter committed 2021-01-01 16:35:24 +08:00
1 parent d5dffe2249
commit 14367d57a9
3 files changed
+52 -38

No files matched your search

@@ -16,6 +16,7 @@
package com.hippo.ehviewer.ui.fragment;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
@@ -75,16 +76,19 @@ public class AdvancedFragment extends BasePreferenceFragment {
.show();
IoThreadPoolExecutor.getInstance().execute(() -> {
boolean success = EhDB.exportDB(requireActivity(), uri);
requireActivity().runOnUiThread(() -> {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
}
showTip(
(success)
? GetText.getString(R.string.settings_advanced_export_data_to, uri.toString())
: GetText.getString(R.string.settings_advanced_export_data_failed),
BaseScene.LENGTH_SHORT);
});
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(() -> {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
}
showTip(
(success)
? GetText.getString(R.string.settings_advanced_export_data_to, uri.toString())
: GetText.getString(R.string.settings_advanced_export_data_failed),
BaseScene.LENGTH_SHORT);
});
}
});
} catch (Exception e) {
showTip(R.string.settings_advanced_export_data_failed, BaseScene.LENGTH_SHORT);
@@ -189,16 +193,20 @@ public class AdvancedFragment extends BasePreferenceFragment {
.show();
IoThreadPoolExecutor.getInstance().execute(() -> {
final String error = EhDB.importDB(requireActivity(), uri);
requireActivity().runOnUiThread(() -> {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
}
if (null == error) {
showTip(getString(R.string.settings_advanced_import_data_successfully), BaseScene.LENGTH_SHORT);
} else {
showTip(error, BaseScene.LENGTH_SHORT);
}
});
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(() -> {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
}
if (null == error) {
showTip(getString(R.string.settings_advanced_import_data_successfully), BaseScene.LENGTH_SHORT);
} else {
showTip(error, BaseScene.LENGTH_SHORT);
}
});
}
});
} catch (Exception e) {
showTip(e.getLocalizedMessage(), BaseScene.LENGTH_SHORT);
@@ -50,6 +50,8 @@ import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.DrawableRes;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
@@ -57,7 +59,6 @@ import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
@@ -153,7 +154,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
private static final String KEY_GALLERY_DETAIL = "gallery_detail";
private static final String KEY_REQUEST_ID = "request_id";
private static final boolean TRANSITION_ANIMATION_DISABLED = true;
private static final int REQUEST_WRITE_STORAGE = 1;
/*---------------
View life cycle
---------------*/
@@ -267,6 +267,20 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
private int mState = STATE_INIT;
private boolean mModifingFavorites;
ActivityResultLauncher<String> requestStoragePermissionLauncher = registerForActivityResult(
new ActivityResultContracts.RequestPermission(),
result -> {
if (result && mGalleryDetail != null) {
TorrentListDialogHelper helper = new TorrentListDialogHelper();
Dialog dialog = new MaterialAlertDialogBuilder(requireActivity())
.setTitle(R.string.torrents)
.setView(R.layout.dialog_torrent_list)
.setOnDismissListener(helper)
.show();
helper.setDialog(dialog, mGalleryDetail.torrentUrl);
}
});
@StringRes
private int getRatingText(float rating) {
int resId;
@@ -1268,7 +1282,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
if (mGalleryDetail != null) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q && ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_STORAGE);
requestStoragePermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE);
} else {
TorrentListDialogHelper helper = new TorrentListDialogHelper();
Dialog dialog = new MaterialAlertDialogBuilder(context)
@@ -1358,20 +1372,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_WRITE_STORAGE && grantResults[0] == PackageManager.PERMISSION_GRANTED && mGalleryDetail != null) {
TorrentListDialogHelper helper = new TorrentListDialogHelper();
Dialog dialog = new MaterialAlertDialogBuilder(requireActivity())
.setTitle(R.string.torrents)
.setView(R.layout.dialog_torrent_list)
.setOnDismissListener(helper)
.show();
helper.setDialog(dialog, mGalleryDetail.torrentUrl);
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
private void showFilterUploaderDialog() {
Context context = getContext2();
String uploader = getUploader();
@@ -101,6 +101,7 @@ import com.hippo.scene.Announcer;
import com.hippo.scene.SceneFragment;
import com.hippo.util.AppHelper;
import com.hippo.util.DrawableManager;
import com.hippo.util.ExceptionUtils;
import com.hippo.view.BringOutTransition;
import com.hippo.view.ViewTransition;
import com.hippo.widget.ContentLayout;
@@ -1426,7 +1427,12 @@ public final class GalleryListScene extends BaseScene
@Override
public void onSelectImage() {
selectImageLauncher.launch(new String[]{"image/*"});
try {
selectImageLauncher.launch(new String[]{"image/*"});
} catch (Throwable e) {
ExceptionUtils.throwIfFatal(e);
showTip(R.string.error_cant_find_activity, BaseScene.LENGTH_SHORT);
}
}
// SearchBarMover.Helper