Meine Forderung ist eine App Asset-Datei aus einer anderen Anwendung über Content-Provider zu öffnen. (Ich diese Datei mit Content Implementierung bin legenden)Problem beim Öffnen Asset-Datei mit Hilfe des Content Provider
Ich bin in der Lage einige zu öffnen Dateien und lesen, aber beim Öffnen von Dateien bekomme ich eine Ausnahme. Sie finden die Implementierung zum Öffnen der Asset-Datei.
@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException {
AssetManager am = getContext().getAssets();
String file_name = uri.getLastPathSegment();
if(file_name == null)
throw new FileNotFoundException();
AssetFileDescriptor afd = null;
try {
afd = am.openFd(file_name);
} catch (IOException e) {
e.printStackTrace();
}
return afd;//super.openAssetFile(uri, mode);
}
Einige Male, am.openFd(file_name);
wirft eine Ausnahme zu sagen, dass,
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
at android.content.res.AssetManager.openAssetFd(Native Method)
at android.content.res.AssetManager.openFd(AssetManager.java:329)
at com.pineone.swfinstaller.SwfProvider.openAssetFile(SwfProvider.java:25)
at android.content.ContentProvider$Transport.openAssetFile(ContentProvider.java:218)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:234)
at android.os.Binder.execTransact(Binder.java:288)
at dalvik.system.NativeStart.run(Native Method)
Aber die gleiche Datei, die ich in meinem PC oder sogar in Android-Gerät auf andere Weise öffnen können.
Kann mir jemand sagen, in welchen Szenarien, wir werden diese Ausnahme bekommen.
Vielen Dank im Voraus.
Wenn wir die Erweiterung so ändern, wird das kein Problem bei der Verwendung der Datei in der App, wenn sie etwas anderes erwartet? – clu