直接存储在android中的文件?

时间:2017-03-08 16:45:16

标签: android file-handling android-external-storage

我一直在研究儿童监控应用程序,我不知道如何将提取的呼叫记录直接存储/写入外部/内部存储中的文件

2 个答案:

答案 0 :(得分:0)

您应该使用文件URI以避免Android安全问题。这样您就可以在其他应用程序中使用这些文件(为它们授予权限)

首先,把它放到你的android-manifest中:

+----------+-----------+---------------------+---------------------+----------+
|   Name   | WorkOrder |    OnSiteStarted    |   OnSiteSubmitted   | Duration |
+----------+-----------+---------------------+---------------------+----------+
| Off-Site |        35 | 2017-02-15 18:32:26 | 2017-02-15 21:11:04 | NULL     |
| On-Site  |  23022017 | 2017-02-23 20:31:49 | 2017-02-23 20:33:47 | NULL     |
| On-Site  |  64169086 | 2017-02-22 11:42:40 | 2017-02-22 15:10:17 | NULL     |
| Off-Site |  91487689 | 2017-02-11 13:48:11 | 2017-02-11 14:32:37 | NULL     |
| On-Site  |  91494707 | 2017-02-13 14:39:42 | 2017-02-13 14:49:03 | NULL     |
| On-Site  |  92810031 | 2017-02-17 09:00:12 | 2017-02-17 09:30:48 | NULL     |
| Off-Site |  92810031 | 2017-02-17 09:30:59 | 2017-02-17 09:58:19 | 28       |
| Off-Site |  92810034 | 2017-02-17 10:01:27 | 2017-02-17 10:24:45 | NULL     |
| On-Site  |  92810039 | 2017-03-03 12:33:41 | 2017-03-03 12:52:37 | NULL     |
| Off-Site |  92810039 | 2017-03-03 12:44:52 | 2017-03-03 13:41:35 | 49       |
+----------+-----------+---------------------+---------------------+----------+

然后,您需要在应用程序标记中定义文件提供程序:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/

file_path资源应如下所示:

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.yourpackagename.yourapp"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
        </provider>

然后,无论何时,您都可以获取文件URI。

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="YourAppCacheStorage"
        path="YourAppCacheStorage"/>
</paths>

此uri可用于打开输入\输出流到您的文件。

public Uri getUriForFile(File file, Context context) {
                final Uri uriForFile = FileProvider.getUriForFile(context,
                            context.getString(R.string.file_provider_authority),
                            file);
                return uriForFile;
}

您可以在那里获得更多信息:https://developer.android.com/reference/android/support/v4/content/FileProvider.html

答案 1 :(得分:-1)

正如您在问题中所评论的那样,这是一个非常广泛的问题,但请看一下这个谷歌开发者链接

https://developer.android.com/training/basics/data-storage/files.html

它会让您清楚地了解您的问题,并且您也可以通过详细的代码获得答案

希望它有所帮助:)