package org.apache.cordova.file.test;
import android.content.ContentProvider;
import android.net.Uri;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.ParcelFileDescriptor;
import org.apache.cordova.CordovaResourceApi;
import java.io.IOException;
import java.util.HashMap;
public class TestContentProvider extends ContentProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
String fileName = uri.getQueryParameter("realPath");
if (fileName == null) {
fileName = uri.getPath();
}
if (fileName == null || fileName.length() < 1) {
throw new FileNotFoundException();
}
CordovaResourceApi resourceApi = new CordovaResourceApi(getContext(), null);
try {
File f = File.createTempFile("test-content-provider", ".tmp");
resourceApi.copyResource(Uri.parse("file:///android_asset" + fileName), Uri.fromFile(f));
FileInputStream fis = new FileInputStream(f);
String thisIsDumb = fis.getFD().toString();
int fd = Integer.parseInt(thisIsDumb.substring("FileDescriptor[".length(), thisIsDumb.length() - 1));
return ParcelFileDescriptor.adoptFd(fd);
} catch (FileNotFoundException e) {
throw e;
} catch (IOException e) {
e.printStackTrace();
throw new FileNotFoundException("IO error: " + e.toString());
}
}
@Override
public boolean onCreate() {
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
throw new UnsupportedOperationException();
}
@Override
public String getType(Uri uri) {
return "text/html";
}
@Override
public Uri insert(Uri uri, ContentValues values) {
throw new UnsupportedOperationException();
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
throw new UnsupportedOperationException();
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
throw new UnsupportedOperationException();
}
}