Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有内部存储的内容提供商_Java_Android_Android Contentprovider_Internal Storage - Fatal编程技术网

Java 具有内部存储的内容提供商

Java 具有内部存储的内容提供商,java,android,android-contentprovider,internal-storage,Java,Android,Android Contentprovider,Internal Storage,我正在编写一个应用程序,其中我将照片保存在内部存储器中。我正在使用此 我知道两个文件的名字,所以我可以在一个代码,但在我的应用程序中也会有一个画廊。所以我的问题是:如何在不知道文件名的情况下保存文件(文件名是使用日期和时间生成的)?内容提供商的oncreate在初始化过程中启动,所以如何将新文件名传递给内容提供商 提前感谢。在content provider类中,在onCreate中删除,完全创建文件 public static String lastPictureSaved = ""; 更改

我正在编写一个应用程序,其中我将照片保存在内部存储器中。我正在使用此

我知道两个文件的名字,所以我可以在一个代码,但在我的应用程序中也会有一个画廊。所以我的问题是:如何在不知道文件名的情况下保存文件(文件名是使用日期和时间生成的)?内容提供商的oncreate在初始化过程中启动,所以如何将新文件名传递给内容提供商


提前感谢。

在content provider类中,在onCreate中删除,完全创建文件

public static String lastPictureSaved = "";
更改函数
openFile
。文件名将根据日期时间和创建的文件进行设置

 Date date = new Date();     
 date.getTime();
 SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd_HHmmss");
 String datetimestr = formatter.format(date);       
 lastPictureSaved = getContext().getFilesDir() + "/" + datetimestr + ".jpg";        
 File f = new File(lastPictureSaved);

 try
   {
    f.createNewFile();
   }
 catch (IOException e)
   {
    e.printStackTrace();

    Log.d(TAG, e.getMessage());
   }
在主机活动中发生更改

 File out = new File(getFilesDir(), "newImage.jpg");


我正在使用这个博客中的解决方案
你们有这个例子吗?有,但在这个例子中,文件名是在自定义ContentProvider中硬编码的。我无法让它工作。此外,我不理解代码。首先我得让它工作起来。你有什么问题吗?没有,一切都很顺利。成功了。在回答您的问题之前,我想知道您是否也将使用内容提供商执行其他操作。稍后在你的应用程序中?我还有一个问题。更改后,我无法使用硬编码文件名的以前版本。如何将调用活动内容提供程序的条件添加到此条件中?然后,时间戳将仅用于画廊和文件名,即仅用于另一个画廊和文件名。抱歉,我不明白您到底想要什么。你想从另一个活动中调用它吗?你想使用内容隐私器不仅拍摄快照,还可以做其他事情吗?我马上问你,你是否打算用内容提供商做其他事情。你们从来并没有给出一个满意的答案。我使用内容提供商只是为了拍照。基本上,我有两个活动:在第一个活动中,我捕获了一个带有硬编码文件名“partner.jpg”的照片动作,所以它的代码与那篇博文中的代码相同。第二个活动是带有时间戳文件名的图像的gridview。我的问题是如何在content provider中处理这两个选项?向类中添加另一个静态变量。比如
公共静态字符串theCaller=“”在拍摄类似于MyFileContentProvider.theCaller=“ActivityA”的照片之前设置它然后在openFile()中检查“调用器”,并相应地采取行动。你甚至可以把文件名放在那里。或者只需将一个文件名或空文件名与类似于MyFileContentProvider.theFileName=“alittlepicture.jpg”
的内容放在一起。或
MyFileContentProvider.theFileName=“
并检查openFile()中的文件名。因此,您可以让提供者确定文件名或活动。你还想要什么?
 File out = new File(MyFileContentProvider.lastPictureSaved);