Fix crashes
This commit is contained in:
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
|
||||
|
||||
Reference in new issue
Block a user