Phonegap - 如何在android手机的根目录中保存.txt文件

时间:2017-01-05 07:33:02

标签: android cordova phonegap-plugins phonegap-build

我试图使用phonegap将.txt文件保存在android mobile的根目录中。 我已经安装了这些插件'cordova-plugin-file'和'cordova-plugin-file-transfer'。在config.xml文件中,我添加了此首选项。

<preference name="AndroidPersistentFileLocation" value="Internal" />

这是我的代码。

<button class="btn-lg btn-success" onclick="saveFile('hello_world.txt', 'This is Dummy Content')">Write File</button>

处理点击事件的代码。

function saveFile(fileName, fileData) {
    // Get access to the file system
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
        // Create the file.
        fileSystem.root.getFile(fileName, {create: true, exclusive: false}, function (entry) {
            // After you save the file, you can access it with this URL
            var myFileUrl = entry.toURL()
            entry.createWriter(function (writer) {
                writer.onwriteend = function (evt) {
                    alert("Successfully saved file to " + myFileUrl)
                }
                // Write to the file
                writer.write(fileData)
            }, function (error) {
                alert("Error: Could not create file writer, " + error.code)
            })
        }, function (error) {
            alert("Error: Could not create file, " + error.code)
        })
    }, function (evt) {
        alert("Error: Could not access file system, " + evt.target.error.code)
    })
}

成功回调后,它会返回此文件位置。

file:///data/data/com.adobe.phonegap.app/files/files/hello_world.txt

但是当我尝试在给定位置找到此文件时。它不在那里。我希望这个文件在我的移动根目录中。

4 个答案:

答案 0 :(得分:2)

如果没有root权限或使用root权限,则无法写入设备的根目录。也许你想写信给SD卡。在这种情况下,写入/ sdcard /应该可以在设置正确的权限时使用。

如果您想访问本地应用数据,可以在此处运行此命令:

adb shell run-as com.adobe.phonegap.app ls -laR

但通常你无法查看/ data / data

中的目录

答案 1 :(得分:2)

查看包含工作样本的link

该链接包含用于文件下载,保存和打开的示例cordova应用程序。也支持文件夹删除选项。

查看自述文件部分。希望能帮助到你。 另外,您可以查看此SO Post以获取更多相关信息。

答案 2 :(得分:0)

我通常使用两个选项中的一个来保存文件,将其保存在我的应用程序的内部存储器的主目录或主目录中。

选项1:

ContextWrapper wrapper = new ContextWrapper(this);
String directory = wrapper.getDir("MyTempFolder", ContextWrapper.MODE_PRIVATE).toString();
/*directory will be of /data/data/com.your_domain_name.your_project_name/app_MyTempFolder*/

option2:或者您可以使用您的应用程序的目录,其中移动用户无法在下面看到此文件是此代码

File myFile = new File(directory, "MyFile.txt");
if(!myFile.exists())
    myFile.createNewFile();

并在代码

下保存文件
FileWriter writer = new FileWriter(myFile);
writer.write("this is my first line in the file");
writer.close();

如果你想在那个文件中写一些数据

-define(macro1(X,Y),{if X == Y -> "True"; true ->"False" end}). 

答案 3 :(得分:-2)

    <activity android:name=".SendMessage.SendMessageLeads"
        android:label="SMS Composer"
        android:icon="@drawable/sms_composer">

        <intent-filter>
           <action android:name="android.intent.action.SEND" />
           <category android:name="android.intent.category.DEFAULT" />
           <data android:mimeType="text/plain" />
       </intent-filter>

    </activity>