mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-14 04:53:22 +02:00
Improved SAF missing reporting
This commit is contained in:
@@ -394,7 +394,8 @@ public class ActivityEML extends ActivityBase {
|
||||
create.putExtra(Intent.EXTRA_TITLE, apart.attachment.name);
|
||||
Helper.openAdvanced(ActivityEML.this, create);
|
||||
if (create.resolveActivity(getPackageManager()) == null) // system whitelisted
|
||||
ToastEx.makeText(ActivityEML.this, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(getSupportFragmentManager(),
|
||||
new IllegalArgumentException(getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(ActivityEML.this, create), REQUEST_ATTACHMENT);
|
||||
}
|
||||
|
||||
@@ -755,7 +755,8 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
|
||||
open.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
open.setType("*/*");
|
||||
if (open.resolveActivity(getPackageManager()) == null) // system whitelisted
|
||||
ToastEx.makeText(this, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(getSupportFragmentManager(),
|
||||
new IllegalArgumentException(getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(this, open), REQUEST_IMPORT_CERTIFICATE);
|
||||
}
|
||||
|
||||
@@ -1263,7 +1263,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
Helper.openAdvanced(context, intent);
|
||||
|
||||
if (intent.resolveActivity(context.getPackageManager()) == null) { // // system/GET_CONTENT whitelisted
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(parentFragment.getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -540,10 +540,10 @@ public class FragmentBase extends Fragment {
|
||||
create.putExtra(Intent.EXTRA_TITLE, attachment.name);
|
||||
Helper.openAdvanced(context, create);
|
||||
PackageManager pm = context.getPackageManager();
|
||||
if (create.resolveActivity(pm) == null) { // system whitelisted
|
||||
Log.w("SAF missing");
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
} else
|
||||
if (create.resolveActivity(pm) == null) // system whitelisted
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(context, create), REQUEST_ATTACHMENT);
|
||||
}
|
||||
|
||||
@@ -556,10 +556,10 @@ public class FragmentBase extends Fragment {
|
||||
Intent tree = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
||||
Helper.openAdvanced(context, tree);
|
||||
PackageManager pm = context.getPackageManager();
|
||||
if (tree.resolveActivity(pm) == null) { // system whitelisted
|
||||
Log.w("SAF missing");
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
} else
|
||||
if (tree.resolveActivity(pm) == null) // system whitelisted
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(context, tree), REQUEST_ATTACHMENTS);
|
||||
}
|
||||
|
||||
|
||||
@@ -540,7 +540,8 @@ public class FragmentContacts extends FragmentBase {
|
||||
open.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
open.setType("*/*");
|
||||
if (open.resolveActivity(pm) == null) // system whitelisted
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(context, open), REQUEST_IMPORT);
|
||||
}
|
||||
|
||||
@@ -1701,7 +1701,8 @@ public class FragmentOptionsBackup extends FragmentBase implements SharedPrefere
|
||||
Intent intent = (export ? getIntentExport(context) : getIntentImport(context));
|
||||
PackageManager pm = context.getPackageManager();
|
||||
if (intent.resolveActivity(pm) == null) { // // system/GET_CONTENT whitelisted
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -409,7 +409,8 @@ public class FragmentOptionsEncryption extends FragmentBase
|
||||
open.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
open.setType("*/*");
|
||||
if (open.resolveActivity(pm) == null) // system whitelisted
|
||||
ToastEx.makeText(context, R.string.title_no_saf, Toast.LENGTH_LONG).show();
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
new IllegalArgumentException(context.getString(R.string.title_no_saf)), 25);
|
||||
else
|
||||
startActivityForResult(Helper.getChooser(context, open), REQUEST_IMPORT_CERTIFICATE);
|
||||
}
|
||||
|
||||
@@ -87,6 +87,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
@@ -1932,6 +1933,14 @@ public class Log {
|
||||
}
|
||||
|
||||
static void unexpectedError(FragmentManager manager, Throwable ex, boolean report) {
|
||||
unexpectedError(manager, ex, report, null);
|
||||
}
|
||||
|
||||
static void unexpectedError(FragmentManager manager, Throwable ex, int faq) {
|
||||
unexpectedError(manager, ex, false, faq);
|
||||
}
|
||||
|
||||
static void unexpectedError(FragmentManager manager, Throwable ex, boolean report, Integer faq) {
|
||||
Log.e(ex);
|
||||
|
||||
if (ex instanceof OutOfMemoryError)
|
||||
@@ -1940,6 +1949,7 @@ public class Log {
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("ex", ex);
|
||||
args.putBoolean("report", report);
|
||||
args.putInt("faq", faq == null ? 0 : faq);
|
||||
|
||||
FragmentDialogUnexpected fragment = new FragmentDialogUnexpected();
|
||||
fragment.setArguments(args);
|
||||
@@ -1950,17 +1960,28 @@ public class Log {
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
final Throwable ex = (Throwable) getArguments().getSerializable("ex");
|
||||
boolean report = getArguments().getBoolean("report", true);
|
||||
Bundle args = getArguments();
|
||||
final Throwable ex = (Throwable) args.getSerializable("ex");
|
||||
final boolean report = args.getBoolean("report", true);
|
||||
final int faq = args.getInt("faq");
|
||||
|
||||
final Context context = getContext();
|
||||
LayoutInflater inflater = LayoutInflater.from(context);
|
||||
View dview = inflater.inflate(R.layout.dialog_unexpected, null);
|
||||
TextView tvError = dview.findViewById(R.id.tvError);
|
||||
Button btnHelp = dview.findViewById(R.id.btnHelp);
|
||||
|
||||
String message = Log.formatThrowable(ex, false);
|
||||
tvError.setText(message);
|
||||
|
||||
btnHelp.setVisibility(faq > 0 ? View.VISIBLE : View.GONE);
|
||||
btnHelp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.viewFAQ(v.getContext(), faq);
|
||||
}
|
||||
});
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context)
|
||||
.setView(dview)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
|
||||
Reference in New Issue
Block a user