diff --git a/app/src/main/java/net/gsantner/markor/util/ShareUtil.java b/app/src/main/java/net/gsantner/markor/util/ShareUtil.java index 4b824d3f35..a1f535e5c8 100644 --- a/app/src/main/java/net/gsantner/markor/util/ShareUtil.java +++ b/app/src/main/java/net/gsantner/markor/util/ShareUtil.java @@ -30,7 +30,6 @@ public class ShareUtil extends net.gsantner.opoc.util.ShareUtil { public ShareUtil(Context context) { super(context); - setFileProviderAuthority(FILE_PROVIDER_AUTHORITY); setChooserTitle(_context.getString(R.string.share_to_arrow)); } diff --git a/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java b/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java index 58bc8009c1..dad4a98ccf 100644 --- a/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java +++ b/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ProviderInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; @@ -1033,6 +1034,26 @@ public boolean isDeviceOrientationPortrait() { final int rotation = ((WindowManager) _context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation(); return (rotation == Surface.ROTATION_0) || (rotation == Surface.ROTATION_180); } + + // Get all of providers of the current app + public List getProvidersInfos() { + final List providers = new ArrayList<>(); + for (final ProviderInfo info : _context.getPackageManager().queryContentProviders(null, 0, 0)) { + if (info.applicationInfo.uid == _context.getApplicationInfo().uid) { + providers.add(info); + } + } + return providers; + } + + public String getFileProvider() { + for (final ProviderInfo info : getProvidersInfos()) { + if (info.name.toLowerCase().contains("fileprovider")) { + return info.authority; + } + } + return null; + } } diff --git a/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java b/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java index 01bbd468c5..3b838afb40 100644 --- a/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java +++ b/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java @@ -82,7 +82,6 @@ public class ShareUtil { public final static String EXTRA_FILEPATH = "real_file_path_2"; public final static SimpleDateFormat SDF_RFC3339_ISH = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss", Locale.getDefault()); - public final static SimpleDateFormat SDF_SHORT = new SimpleDateFormat("yyMMdd-HHmmss", Locale.getDefault()); public final static SimpleDateFormat SDF_IMAGES = new SimpleDateFormat("yyyyMMdd-HHmmss", Locale.getDefault()); //20190511-230845 public final static String MIME_TEXT_PLAIN = "text/plain"; public final static String PREF_KEY__SAF_TREE_URI = "pref_key__saf_tree_uri"; @@ -94,7 +93,6 @@ public class ShareUtil { public final static int MIN_OVERWRITE_LENGTH = 5; protected static String _lastCameraPictureFilepath; - protected static String _fileProviderAuthority; protected Context _context; protected String _chooserTitle; @@ -113,14 +111,13 @@ public void freeContextRef() { } public String getFileProviderAuthority() { - if (TextUtils.isEmpty(_fileProviderAuthority)) { + ContextUtils cu = new ContextUtils(_context); + final String provider = cu.getFileProvider(); + cu.freeContextRef(); + if (TextUtils.isEmpty(provider)) { throw new RuntimeException("Error at ShareUtil.getFileProviderAuthority(): No FileProvider authority provided"); } - return _fileProviderAuthority; - } - - public static void setFileProviderAuthority(final String fileProviderAuthority) { - _fileProviderAuthority = fileProviderAuthority; + return provider; }