代码之家  ›  专栏  ›  技术社区  ›  Josu Goñi

我在哪里可以找到安卓系统中的标准uri权限,以及它们是如何工作的?

  •  0
  • Josu Goñi  · 技术社区  · 4 年前

    我发现了以下代码片段:

        @TargetApi(Build.VERSION_CODES.KITKAT)
        public static String getPath(final Context context, final Uri uri) {
    
            final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
            if (isKitKat) {
                // ExternalStorageProvider
                if (isExternalStorageDocument(uri)) {
                    final String docId = uri.getPath();
                    final String[] split = docId.split(":");
                    final String type = split[0];
    
                    if ("/tree/primary".equalsIgnoreCase(type)) {
                        return Environment.getExternalStorageDirectory() + "/" + split[1];
                    }                
                }           
            }
            return null;
        }
    
        /**
         * @param uri The Uri to check.
         * @return Whether the Uri authority is ExternalStorageProvider.
         */
        public static boolean isExternalStorageDocument(Uri uri) {
            return "com.android.externalstorage.documents".equals(uri.getAuthority());
        }
    

    我想用它将uri转换为完整路径,我想了解更多关于我可以获得的“权限”的信息,但在官方文档中,我只找到了如何创建权限,而没有找到关于我可以在普通设备上找到什么的信息。

    还有更复杂的代码 this one 从…起 this question 但我想找到这种逻辑背后的官方文件。一个很好的解释这是如何运作的也受到欢迎。

    1 回复  |  直到 4 年前
        1
  •  2
  •   CommonsWare    4 年前

    我想用它将uri转换为完整路径

    这是不可靠的。A. Uri 是一个不透明的标识符,仅此而已。

    我想要更多关于我可以获得的“权威”的信息,但在官方文档中,我只找到了如何创建权威,而不是关于我可以在普通设备上找到什么的信息

    这是因为这些信息因设备而异:

    • 操作系统版本
    • 设备制造商
    • 用户安装的应用
    • 应用程序版本

    所有这些都没有记录在案,因为它都是应用程序的内部实现(从核心操作系统、设备和用户安装的应用程序)。

    我想找到这种逻辑背后的官方文件

    没有。