public static Asset newFileAsset(FileTypedResource fileTypedResource) throws IOException { _FileAsset fileAsset = new _FileAsset(); FsFile fsFile = fileTypedResource.getFsFile(); fileAsset.mFileName = fsFile.getName(); fileAsset.mLength = fsFile.length(); fileAsset.mBuf = fsFile.getBytes(); return fileAsset; }
@HiddenApi @Implementation public final InputStream openNonAsset(int cookie, String fileName, int accessMode) throws IOException { final ResName resName = qualifyFromNonAssetFileName(fileName); final FileTypedResource typedResource = (FileTypedResource) resourceTable.getValue(resName, RuntimeEnvironment.getQualifiers()); if (typedResource == null) { throw new IOException("Unable to find resource for " + fileName); } if (accessMode == AssetManager.ACCESS_STREAMING) { return typedResource.getFsFile().getInputStream(); } else { return new ByteArrayInputStream(typedResource.getFsFile().getBytes()); } }
@HiddenApi @Implementation public final InputStream openNonAsset(int cookie, String fileName, int accessMode) throws IOException { final ResName resName = qualifyFromNonAssetFileName(fileName); final FileTypedResource typedResource = (FileTypedResource) resourceTable.getValue(resName, RuntimeEnvironment.getQualifiers()); if (typedResource == null) { throw new IOException("Unable to find resource for " + fileName); } if (accessMode == AssetManager.ACCESS_STREAMING) { return typedResource.getFsFile().getInputStream(); } else { return new ByteArrayInputStream(typedResource.getFsFile().getBytes()); } }
@HiddenApi @Implementation public final InputStream openNonAsset(int cookie, String fileName, int accessMode) throws IOException { final ResName resName = qualifyFromNonAssetFileName(fileName); final FileTypedResource typedResource = (FileTypedResource) resourceLoader.getValue(resName, RuntimeEnvironment.getQualifiers()); if (typedResource == null) { throw new IOException("Unable to find resource for " + fileName); } if (accessMode == AssetManager.ACCESS_STREAMING) { return typedResource.getFsFile().getInputStream(); } else { return new ByteArrayInputStream(typedResource.getFsFile().getBytes()); } }
@HiddenApi @Implementation public final InputStream openNonAsset(int cookie, String fileName, int accessMode) throws IOException { final ResName resName = qualifyFromNonAssetFileName(fileName); final FileTypedResource typedResource = (FileTypedResource) resourceTable.getValue(resName, config); if (typedResource == null) { throw new IOException("Unable to find resource for " + fileName); } InputStream stream; if (accessMode == AssetManager.ACCESS_STREAMING) { stream = typedResource.getFsFile().getInputStream(); } else { stream = new ByteArrayInputStream(typedResource.getFsFile().getBytes()); } if (RuntimeEnvironment.getApiLevel() >= P) { Asset asset = Asset.newFileAsset(typedResource); long assetPtr = Registries.NATIVE_ASSET_REGISTRY.register(asset); // Camouflage the InputStream as an AssetInputStream so subsequent instanceof checks pass. stream = ShadowAssetInputStream.createAssetInputStream(stream, assetPtr, realObject); } return stream; }