gpt4 book ai didi

android - app 和 uri 的内部存储

转载 作者:行者123 更新时间:2023-11-30 01:37:17 26 4
gpt4 key购买 nike

所以我正在使用 twitter api,我想用我使用的图像发推文:

    TweetUri = Uri.fromFile(saveIT);
TweetComposer.Builder builder = new TweetComposer.Builder(this)
.text("")
.image(TweetUri);
builder.show();

原始图像是位图,所以我所做的(不确定这是否是最佳方式)是保存在内部存储中:

    private File saveToInternalStorage(Bitmap bitmapImage){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
String mImageName="MI_"+ timeStamp +".jpg";
File mypath=new File(directory,mImageName);

FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try
{
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
return mypath;
}

当它执行 fromfile 方法时,它返回的文件将是 TweetUri 中的“saveIT”。当然,这会使存储过载,所以我打算做的是在应用程序停止时删除它的内部存储空间(除了我为推文保存的临时图像外,内部存储空间中没有保存其他数据):

@Override
protected void onStop() {
super.onStop();
File MSD = this.getApplicationContext().getFilesDir();
File [] lisFiles = MSD.listFiles();
for(int i=0;i<lisFiles.length;i++)
{
boolean deleted = lisFiles[i].delete();
}
}

这些都不起作用...当我保存图像以验证是否正在删除时,我似乎找不到任何图像。此外,当用户单击推文时,也不会向推文添加任何图像。不知道我在这里做错了什么......实际上我不想将图像保存在内部存储中,但我这样做是因为 tweet api 使用 URI 而不是位图来发送推文。

最佳答案

我将其切换为写入外部存储,并且运行良好。我也将它切换为在 onDestroy 中删除。这更好,因为当我调用 Twitter API 时,它会切换 Activity ,因此会调用 onstop,这会过早删除临时图片。现在还为时过早,因为如果用户在 twitter api 上单击取消,返回到我的 api,然后再次调用 twitter api,则 uri 将指向任何内容,因为图片已被删除。这就是所有人 :)

关于android - app 和 uri 的内部存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com