当安装apk时,如何使其在sdcard上创建一个文件?

4

我对安卓开发非常新手,想要找到一种方法在eclipse中修改现有源代码,以便在安装apk时将xml文件从apk内部复制到外部存储器上的特定文件夹中。

是否有这样的方法呢?


为了更详细地说明我的目标,我有一个应用程序的代码,它从Web服务器下载文件,然后对其进行处理。目前在应用程序的GUI中处理获取文件的过程。一旦文件被下载到SD卡中,程序就会对其进行处理。我想做的是让应用程序从正确的文件开始,并且永远不会让用户接触到GUI的选择/下载部分。由于我不是真正的编码人员,因此我正在寻找最简单的方法来实现这一点。 - m13124
1个回答

4
请看这里的问题和答案:Android: 如何在SD卡上创建目录并将文件从/res/raw复制到其中? 编辑:考虑一下,我使用/assets文件夹而不是/res/raw。 大致上这是我所做的...
首先,在外部存储器上获取一个有效的文件夹(通常是SD卡)...
File myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.mycompany.myApp/files");

请将上面路径中的com.mycompany.myApp替换为您应用程序的包名。

然后以下内容将复制以“xyz”开头的所有文件,例如:xyz123.txt,xyz456.xml等,这些文件都位于assets文件夹中。

try {
    AssetManager am = getAssets();
    String[] list = am.list("");
    for (String s:list) {
        if (s.startsWith("xyz")) {
            Log.d(TAG, "Copying asset file " + s);
            InputStream inStream = am.open(s);
            int size = inStream.available();
            byte[] buffer = new byte[size];
            inStream.read(buffer);
            inStream.close();
            FileOutputStream fos = new FileOutputStream(myFilesDir + "/" + s);
            fos.write(buffer);
            fos.close();
        }
    }
}
catch (Exception e) {
    // Better to handle specific exceptions such as IOException etc
    // as this is just a catch-all
}

请注意,您需要在AndroidManifest.xml文件中添加以下权限...
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

谢谢!那似乎是我正在寻找的,但我太笨拙了,无法根据那个答案实现它。我不是一个真正的编码人员,而且我在这里做了一些杂乱无章的工作。您能否以代码片段的方式向我展示正确实现时它实际上会是什么样子? - m13124
@m13124:请看我上面回答中的编辑部分。 - Squonk
谢谢MisterSquonk!我会尝试一下 :) - m13124
有没有一种方法可以在 APK 安装期间完成它? - Flash Thunder
1
@FlashThunder:不可以。与类似于 Windows 应用程序安装的方式不同,无法自定义 Android 应用程序过程。你所能做到的最接近的方式是在首次运行应用程序时进行复制。 - Squonk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接