本文整理汇总了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;未经允许,请勿转载。 |
请发表评论