CrackMe.apk
Download file
package expo.modules.filesystem;
import android.content.Context;
import expo.modules.core.ModuleRegistry;
import expo.modules.core.interfaces.InternalModule;
import expo.modules.core.interfaces.RegistryLifecycleListener;
import expo.modules.interfaces.filesystem.FilePermissionModuleInterface;
import expo.modules.interfaces.filesystem.Permission;
import java.io.File;
import java.io.IOException;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
@Metadata(d1 = {"\u00004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0016\u0018\u00002\u00020\u00012\u00020\u0002B\u0005¢\u0006\u0002\u0010\u0003J\u0012\u0010\u0004\u001a\f\u0012\b\u0012\u0006\u0012\u0002\b\u00030\u00060\u0005H\u0016J\u0016\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\b2\u0006\u0010\n\u001a\u00020\u000bH\u0014J \u0010\f\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\b2\u0006\u0010\n\u001a\u00020\u000b2\u0006\u0010\r\u001a\u00020\u000eH\u0002J\u0016\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u000b0\u00052\u0006\u0010\r\u001a\u00020\u000eH\u0002J\u001e\u0010\u0010\u001a\b\u0012\u0004\u0012\u00020\t0\b2\u0006\u0010\r\u001a\u00020\u000e2\u0006\u0010\n\u001a\u00020\u000bH\u0016¨\u0006\u0011"}, d2 = {"Lexpo/modules/filesystem/FilePermissionModule;", "Lexpo/modules/interfaces/filesystem/FilePermissionModuleInterface;", "Lexpo/modules/core/interfaces/InternalModule;", "()V", "getExportedInterfaces", "", "Ljava/lang/Class;", "getExternalPathPermissions", "Ljava/util/EnumSet;", "Lexpo/modules/interfaces/filesystem/Permission;", "path", "", "getInternalPathPermissions", "context", "Landroid/content/Context;", "getInternalPaths", "getPathPermissions", "expo-file-system_release"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: FilePermissionModule.kt */
public class FilePermissionModule implements FilePermissionModuleInterface, InternalModule {
public /* synthetic */ void onCreate(ModuleRegistry moduleRegistry) {
RegistryLifecycleListener.CC.$default$onCreate(this, moduleRegistry);
}
public /* synthetic */ void onDestroy() {
RegistryLifecycleListener.CC.$default$onDestroy(this);
}
public List<Class<?>> getExportedInterfaces() {
return CollectionsKt.listOf(FilePermissionModuleInterface.class);
}
public EnumSet<Permission> getPathPermissions(Context context, String str) {
Intrinsics.checkNotNullParameter(context, "context");
Intrinsics.checkNotNullParameter(str, "path");
EnumSet<Permission> internalPathPermissions = getInternalPathPermissions(str, context);
return internalPathPermissions == null ? getExternalPathPermissions(str) : internalPathPermissions;
}
private final EnumSet<Permission> getInternalPathPermissions(String str, Context context) {
Object obj;
try {
String canonicalPath = new File(str).getCanonicalPath();
Iterator it = getInternalPaths(context).iterator();
while (true) {
if (!it.hasNext()) {
obj = null;
break;
}
obj = it.next();
String str2 = (String) obj;
Intrinsics.checkNotNullExpressionValue(canonicalPath, "canonicalPath");
boolean z = false;
if (StringsKt.startsWith$default(canonicalPath, str2 + "/", false, 2, (Object) null) || Intrinsics.areEqual((Object) str2, (Object) canonicalPath)) {
z = true;
continue;
}
if (z) {
break;
}
}
if (((String) obj) == null) {
return null;
}
return EnumSet.of(Permission.READ, Permission.WRITE);
} catch (IOException unused) {
return EnumSet.noneOf(Permission.class);
}
}
/* access modifiers changed from: protected */
public EnumSet<Permission> getExternalPathPermissions(String str) {
Intrinsics.checkNotNullParameter(str, "path");
File file = new File(str);
EnumSet<Permission> noneOf = EnumSet.noneOf(Permission.class);
if (file.canRead()) {
noneOf.add(Permission.READ);
}
if (file.canWrite()) {
noneOf.add(Permission.WRITE);
}
Intrinsics.checkNotNullExpressionValue(noneOf, "noneOf(Permission::class…sion.WRITE)\n }\n }");
return noneOf;
}
private final List<String> getInternalPaths(Context context) throws IOException {
return CollectionsKt.listOf(context.getFilesDir().getCanonicalPath(), context.getCacheDir().getCanonicalPath());
}
}
Download file