当前位置: 首页>>代码示例>>Java>>正文


Java PathPermission类代码示例

本文整理汇总了Java中android.content.pm.PathPermission的典型用法代码示例。如果您正苦于以下问题:Java PathPermission类的具体用法?Java PathPermission怎么用?Java PathPermission使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


PathPermission类属于android.content.pm包,在下文中一共展示了PathPermission类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getExportedContentProvider

import android.content.pm.PathPermission; //导入依赖的package包/类
public String getExportedContentProvider() {
    StringBuilder sb = new StringBuilder();
    if (mPInfo.providers != null) {
        for (ProviderInfo pi : mPInfo.providers) {
            String piName = pi.name;
            if (pi.exported) {

                //Grant Uri Permissions
                piName = piName + " GRANT: " + String.valueOf(pi.grantUriPermissions) + "|";

                if (pi.authority != null) {
                    piName = piName + " AUTHORITY: " + pi.authority + "|";
                }

                if (pi.readPermission != null) {
                    piName = piName + " READ: " + pi.readPermission + "|";
                }
                if (pi.writePermission != null) {
                    piName = piName + " WRITE: " + pi.writePermission + "|";
                }
                PathPermission[] pp = pi.pathPermissions;
                if (pp != null) {
                    for (PathPermission pathPermission : pp) {
                        piName = piName + " PATH: " + pathPermission.getPath() + "|";
                        piName = piName + "  - READ: " + pathPermission.getReadPermission() + "|";
                        piName = piName + "  - WRITE: " + pathPermission.getWritePermission() + "|";
                    }
                }
                sb.append(piName + "\n");
            }
        }
    } else {
        sb.append(" -- null");
    }
    return sb.toString();
}
 
开发者ID:ac-pm,项目名称:Inspeckage,代码行数:37,代码来源:PackageDetail.java

示例2: getNonExportedContentProvider

import android.content.pm.PathPermission; //导入依赖的package包/类
public String getNonExportedContentProvider() {
    StringBuilder sb = new StringBuilder();
    if (mPInfo.providers != null) {
        for (ProviderInfo pi : mPInfo.providers) {
            String piName = pi.name;
            if (!pi.exported) {

                //Grant Uri Permissions
                piName = piName + " GRANT: " + String.valueOf(pi.grantUriPermissions) + "|";

                if (pi.authority != null) {
                    piName = piName + " AUTHORITY: " + pi.authority + "|";
                }

                if (pi.readPermission != null) {
                    piName = piName + " READ: " + pi.readPermission + "|";
                }
                if (pi.writePermission != null) {
                    piName = piName + " WRITE: " + pi.writePermission + "|";
                }
                PathPermission[] pp = pi.pathPermissions;
                if (pp != null) {
                    for (PathPermission pathPermission : pp) {
                        piName = piName + " PATH: " + pathPermission.getPath() + "|";
                        piName = piName + "  - READ: " + pathPermission.getReadPermission() + "|";
                        piName = piName + "  - WRITE: " + pathPermission.getWritePermission() + "|";
                    }
                }
                sb.append(piName + "\n");
            }
        }
    } else {
        sb.append(" -- null");
    }
    return sb.toString();
}
 
开发者ID:ac-pm,项目名称:Inspeckage,代码行数:37,代码来源:PackageDetail.java

示例3: unwrapUriAndCheckPermissions

import android.content.pm.PathPermission; //导入依赖的package包/类
private Uri unwrapUriAndCheckPermissions(Uri wrappedUri, PermissionEnforcement enforcement) {
    // Unwrap
    final Matcher matcher = PATH_PATTERN.matcher(wrappedUri.getPath());
    if (!matcher.find()) {
        throw new IllegalArgumentException("Unable to match uri");
    }
    final String authority = matcher.group(1);
    final String path = matcher.group(2);
    Uri unwrappedUri = Uri.parse("content://" + authority + path);

    // Check permissions
    final boolean isUnprotected = shouldSkipPermissionChecks() || enforcement == PermissionEnforcement.UNPROTECTED;
    if (!isUnprotected) {
        final boolean enforceWrite = enforcement == PermissionEnforcement.ENFORCE_WRITE;

        // Get provider info
        final ProviderInfo providerInfo = getContext().getPackageManager().resolveContentProvider(unwrappedUri.getAuthority(), PackageManager.GET_META_DATA);
        if (providerInfo == null) {
            throw new SecurityException("Unknown wrapped provider");
        }

        // Check "intentslab.disallowproxy" meta-data
        if (providerInfo.metaData != null && providerInfo.metaData.getBoolean("intentslab.disallowproxy")) {
            throw new SecurityException("Not allowed to proxy to " + authority + " (disallowed by <meta-data>)");
        }

        // Check also normal permissions
        boolean hasNormalPermissionGranted;
        if (!providerInfo.exported) {
            // Provider not exported, never grant normal permission
            hasNormalPermissionGranted = false;
        } else {
            // Get default provider-global permission
            String permission = enforceWrite ? providerInfo.writePermission : providerInfo.readPermission;

            // Find path permission if there are such permissions defined
            // and there's no provider-global permission set for that, which takes precedence
            if (providerInfo.pathPermissions != null && permission == null) {
                for (PathPermission pathPermission : providerInfo.pathPermissions) {
                    if (pathPermission.match(unwrappedUri.getPath())) {
                        permission = enforceWrite ? pathPermission.getWritePermission() : pathPermission.getReadPermission();
                        break;
                    }
                }
            }

            // Check that permission
            if (permission == null) {
                hasNormalPermissionGranted = true;
            } else {
                hasNormalPermissionGranted = getContext().checkCallingPermission(permission) == PackageManager.PERMISSION_GRANTED;
            }
        }

        // Check if caller has granted runtime permission
        final int modeFlags = enforceWrite ? Intent.FLAG_GRANT_WRITE_URI_PERMISSION : Intent.FLAG_GRANT_READ_URI_PERMISSION;
        final boolean hasRuntimePermissionGranted = getContext().checkCallingUriPermission(unwrappedUri, modeFlags) != PackageManager.PERMISSION_GRANTED;

        // Throw if permission isn't granted
        if (!hasNormalPermissionGranted && !hasRuntimePermissionGranted) {
            throw new SecurityException("Wrapped permission check");
        }
    }

    return unwrappedUri;
}
 
开发者ID:michalbednarski,项目名称:IntentsLab,代码行数:67,代码来源:ProxyProvider.java


注:本文中的android.content.pm.PathPermission类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。