我正在尝试为Android移动版Firefox开发Firefox扩展程序。我的代码包含以下代码段:
var target = Cc["@mozilla.org/file/directory_service;1"]
.getService(Ci.nsIProperties)
.get("DfltDwnld", Ci.nsIFile);
这适用于Windows上的当前Firefox,Android上的Nightlies,但不适用于Android上的当前Firefox版本。后者给出以下错误:
I/stdout (17182): ************************************************************
I/stdout (17182): * Call to xpconnect wrapped JSObject produced this error: *
I/stdout (17182): [Exception... "Component returned failure code: 0x80004005 (N
S_ERROR_FAILURE) [nsIProperties.get]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"
location: "JS frame :: resource://gre/modules/XPIProvider.jsm -> jar:file:///m
nt/sdcard/jetpack-profile/extensions/jid1-deaye7pPKgPbLg@jetpack.xpi!/bootstrap.
js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-deaye
7ppkgpblg-at-jetpack/my-addon/lib/main.js :: extractFile :: line 109" data: no]
I/stdout (17182): ************************************************************
同样,当我尝试不同的是创建文件时,我得到了类似的结果:
代码:
Cu.import("resource://gre/modules/FileUtils.jsm");
var target = FileUtils.getFile("DfltDwnld", entryName);
结果:
E/GeckoConsole( 2157): [JavaScript Error: "[Exception... "Component returned fai
lure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get]" nsresult: "0x8000
4005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/FileUtil
s.jsm :: FileUtils_getDir :: line 63" data: no]" {file: "resource://gre/modules
/FileUtils.jsm" line: 63}]
知道发生了什么,我能做什么?就好像脚本没有写入下载目录的权限。
答案 0 :(得分:2)
DfltDwnld
被排除在Fennec's directory provider之外。
仍然可以使用以下行获取默认目录
var dDD = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager).defaultDownloadsDirectory;