Skip to content

Commit

Permalink
Automatically find FileProvider, by @gsantner
Browse files Browse the repository at this point in the history
  • Loading branch information
gsantner committed Aug 8, 2021
1 parent fc9269b commit f101bed
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
1 change: 0 additions & 1 deletion app/src/main/java/net/gsantner/markor/util/ShareUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}

Expand Down
21 changes: 21 additions & 0 deletions app/src/main/java/net/gsantner/opoc/util/ContextUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<ProviderInfo> getProvidersInfos() {
final List<ProviderInfo> 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;
}
}


13 changes: 5 additions & 8 deletions app/src/main/java/net/gsantner/opoc/util/ShareUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -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;
Expand All @@ -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;
}


Expand Down

0 comments on commit f101bed

Please sign in to comment.