summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsService.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-08-01 21:06:06 +0800
committerPo Lu <luangruo@yahoo.com>2023-08-01 21:06:06 +0800
commite41349dd93ffec2b1e383cb4c4dfdb59f6e7edac (patch)
tree0fcd44202d335331c554ebab0730467329729ad0 /java/org/gnu/emacs/EmacsService.java
parentb022398b8f0a03f0e1b3ec8df41a439cdbe5bd19 (diff)
Update Android port
* doc/emacs/android.texi (Android File System): Describe how to access real files named /assets or /contents if so required. * java/org/gnu/emacs/EmacsService.java (validAuthority): * src/android.c (android_init_emacs_service): * src/android.h: New function. * src/androidvfs.c (android_saf_valid_authority_p): New function. Wrap the Java function. (android_saf_root_stat, android_saf_root_access): Don't return success if no authority by vp->authority's name exists. (android_saf_tree_from_name): Check validity of string data before giving it to JNI.
Diffstat (limited to 'java/org/gnu/emacs/EmacsService.java')
-rw-r--r--java/org/gnu/emacs/EmacsService.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java
index 3c1bb0855f4..8554dadd06e 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -1769,4 +1769,29 @@ public final class EmacsService extends Service
? DocumentsContract.getDocumentId (name)
: null);
}
+
+ /* Return if there is a content provider by the name of AUTHORITY
+ supplying at least one tree URI Emacs retains persistent rights
+ to access. */
+
+ public boolean
+ validAuthority (String authority)
+ {
+ List<UriPermission> permissions;
+ Uri uri;
+
+ permissions = resolver.getPersistedUriPermissions ();
+
+ for (UriPermission permission : permissions)
+ {
+ uri = permission.getUri ();
+
+ if (DocumentsContract.isTreeUri (uri)
+ && permission.isReadPermission ()
+ && uri.getAuthority ().equals (authority))
+ return true;
+ }
+
+ return false;
+ }
};