标签: android-internal-storage

如何将html内容中的内嵌图像保存/读取到内部/外部内存

根据这个问题,我使用了一个自定义ImageGatter类来显示我使用Picasso从TextView中的服务器获取的图像

    public class PicassoImageGetter implements Html.ImageGetter {

    private TextView textView = null;
    Context mContext;

    public PicassoImageGetter() {

    }

    public PicassoImageGetter(TextView target, Context context) {
        textView = target;
        mContext = context;
    }

    @Override
    public Drawable getDrawable(String source) {

        BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();
        Picasso.get().load(source).into(drawable);
        return drawable;

    }

    private class BitmapDrawablePlaceHolder extends BitmapDrawable implements com.squareup.picasso.Target {

        protected Drawable drawable;

        @Override
        public void draw(final Canvas canvas) {
            if (drawable != null) {
                drawable.draw(canvas);
            }
        }

        public void setDrawable(Drawable drawable) {
            this.drawable …
Run Code Online (Sandbox Code Playgroud)

android android-image picasso android-bitmap android-internal-storage

11
推荐指数
1
解决办法
218
查看次数

使用Intent打开时,Word文档始终为只读

我试图打开并编辑一个Word文档位于我的外部存储在我的Xamarin.Android应用程序与MS-Word中使用此代码:

File wordFile = new File(wordFilePath);
wordFile.SetWritable(true);

FileInfo fileInfo = new FileInfo(wordFilePath);
fileInfo.IsReadOnly = false;

Android.Net.Uri uri = FileProvider.GetUriForFile(Context, Context.PackageName + ".provider", wordFile);

Intent intent = new Intent();
intent.AddFlags(ActivityFlags.NewTask);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.AddFlags(ActivityFlags.GrantWriteUriPermission);
intent.AddFlags(ActivityFlags.GrantPersistableUriPermission);
intent.SetAction(Intent.ActionView);

intent.SetData(uri);

Context.StartActivity(intent);
Run Code Online (Sandbox Code Playgroud)

问题是,该文件始终为只读。当我通过任何文件浏览器(例如File Manager Pro)打开文档时,它不是只读的,我可以编辑文件。

我是否缺少需要在应用程序或FileProvider中设置的任何权限?

编辑:

  • 我已使用Android Word应用程序中的Office帐户登录
  • 使用WPS Office可以很好地工作,因此MS-Word必须是一个特殊的问题
  • 使用intent.SetAction(Intent.ActionEdit);没有区别
  • 使用intent.SetDataAndType(uri, "application/msword");没有区别
  • 使用Google Docs的类似行为:使用FileExplorer,我可以打开和编辑文件。如果我通过我的应用程序使用Google Docs打开文件,则可以编辑文件,但是如果单击“保存”,应用程序会要求我“将文件更新为新的DOCX格式”。然后,我可以将文件保存到新目录。
  • 在文件资源管理器中使用的ActionView&组合SetDataAndType也不起作用

像这样 …

android ms-word android-intent xamarin.android android-internal-storage

9
推荐指数
1
解决办法
237
查看次数

为什么使用FileProvider我无法使用外部应用程序从INTERNAL STORAGE打开文件?

我创建了一个可以在其内部存储中导入文件的应用程序.为了打开与外部应用程序文件(例如PF观众或照片),我试图按照这些指南:官方指南,TOPIC1,标题2,topic3topic4但没有成功.

这是我的代码:

在我的清单中

<provider
   android:name="android.support.v4.content.FileProvider"
   android:authorities="com.myapp.chatcher"
   android:exported="false"
   android:grantUriPermissions="true">
   <meta-data
       android:name="android.support.FILE_PROVIDER_PATHS"
       android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)

我的包价值: package="com.myapp.catcher"

我的file_paths.xml

<paths
    xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="projection" path="." />
</paths>
Run Code Online (Sandbox Code Playgroud)

我的代码

String fileName = path.substring(path.lastIndexOf("/") + 1);
String shelf = path.substring(path.lastIndexOf("PRIVATE") + 8, path.lastIndexOf("/"));
File filePath = new File(mContext.getFilesDir(), "PRIVATE".concat("/").concat(shelf).concat("/"));
File newFile = new File(filePath, fileName);
Uri contentUri = FileProvider.getUriForFile(mContext, "com.myapp.chatcher", newFile);

Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.setData(contentUri);
myIntent.setType(mimeType);
myIntent.setFlags(FLAG_GRANT_READ_URI_PERMISSION | FLAG_GRANT_WRITE_URI_PERMISSION);
mContext.startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)

我创建了这样的层次结构:

PRIVATE -> …
Run Code Online (Sandbox Code Playgroud)

android android-fileprovider android-internal-storage

8
推荐指数
1
解决办法
6458
查看次数

安装应用程序后,未创建内部存储(Android&gt;数据)包文件夹

当我全新安装应用程序时,我注意到大多数应用程序都会在“内部存储”>“Android”>“数据”>“com.example.package”文件夹中创建一个文件夹。例如,它的 Facebook 应用程序将类似于 com.facebook.xxxxx。

\n\n

然而,我最近参与的一个项目,我注意到路径“内部存储”>“Android”>“数据”>(没有packege文件夹)中没有这样的应用程序文件夹。

\n\n

在什么情况下它不会在上述路径中创建应用程序文件夹?因为我调试的大多数应用程序都是通过 android studio 运行或通过 apk 文件安装...默认情况下,上述位置始终有一个应用程序文件夹。

\n\n

因为我想将以下文件写入 getFilesDir(),

\n\n
File file = new File(activity.getFilesDir(),imageFileName);\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过使用 getFilesDir(),写入的文件将进入 Android > Data > Package 文件夹 > Files 文件夹,大多数已安装的应用程序在 Android > Data > (此处)中都有一个包文件夹路径。今天我意识到我现在正在做的一个项目,它没有创建这样的包文件夹。那么,当我使用 getFilesDir() 时,这些文件仍将在上述路径中存储和创建,但它是不可见的?或者我使用 getFilesDir() 创建的那些文件将不会被创建?因为正如我提到的,这个应用程序不会创建包文件夹。我必须使用 makedir 吗?如果是的话,会进行什么检查?if(\xef\xbc\x81activity.getFilesDir().exist())

\n\n
File file = new File(activity.getFilesDir(),imageFileName);\n\n//getFilesDir() normally is package folder Android > Data > (package folder*) > Files\n
Run Code Online (Sandbox Code Playgroud)\n

android file android-internal-storage

6
推荐指数
1
解决办法
3641
查看次数

Android Adoptable Storage - 查看是否已安装内部SD

当我想到这个问题时,我想知道:是否真的没有办法找出是否存在采用的SD?对于摩托罗拉G3,getExternalFilesDirs()当存在外部SD时,有两条路径返回,但只有一条(模拟的,总是存在的)将SD格式化为内部.其他设备似乎表现相似.

所以,如果我想知道是否存在内部SD,我需要在哪里查看?是否有任何(非制造商特定的)提供,所以我可以检查,如果用户希望使用内部模拟,Environment.getExternalStorageDirectory()因为他已经安装了内部SD?

android android-sdcard android-6.0-marshmallow android-internal-storage

5
推荐指数
0
解决办法
258
查看次数

如何下载并保存内部存储中的媒体文件 android java

我想从互联网上下载一些音频文件。我想使用downloadmanager下载这个文件,但我不知道如何将这些文件保存到android中的特定内部存储位置。InternalStorage/folder/filename.mp3(这样我就可以轻松访问它们)。

manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                Uri uri = Uri.parse("URL");
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
                long reference = manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

对于下载很有用。但我们无法指定这些文件的位置。

那么如何指定这些文件保存在内部存储的特定位置呢?还有,如何access使用delete这些文件。

请不要提出这个问题,因为我在阅读很多文章时感到困惑。

如果有其他更好的选择或任何建议请评论

android android-download-manager android-internal-storage android-storage

5
推荐指数
1
解决办法
1万
查看次数

在Android中保存文件-对于初学者(内部/外部存储)

我对android开发非常陌生,请需要新手帮助...

我正在创建一个应具有2个目录,一个Databases目录和一个Images目录的应用程序,就像Whatsapp拥有的一样。

当我浏览手机时,我想在文件管理器中看到这些目录,就像看到其他应用程序文件夹一样。我尝试了在这里找到的所有内容,并通过代码在内部存储和外部存储中创建了它。该文件夹似乎已创建,但是当我浏览手机的文件管理器时,找不到带有应用程序名称的文件夹,而在其中没有我的数据库和图像文件夹...我在做什么错?我需要在android studio中创建这些文件夹作为添加文件夹吗?还是我需要通过代码创建它?

您能给我完成这项任务所需要做的动作吗?我正在使用android studio 3.1.3。感谢您的帮手!:)

android-external-storage android-studio android-internal-storage android-studio-3.1 android-studio-3.1.3

4
推荐指数
1
解决办法
7227
查看次数

如何从存储中获取准确的容量

我想以编程方式从实习存储中读取确切的容量。

我使用的是 Samsung Galaxy S7 Edge 32GB 设备。

在预装的三星文件管理器(德语:Eigene Dateien)中,它显示了 32GB 的总容量。即使在菜单 => 设置 => 存储中,它也显示 32GB。

(如截图所示)

当我使用下面的代码时,它显示总容量为 24,4GB。

(在帖子末尾的日志中显示)

问:如何获得我设备的准确 32GB 总容量?

截图

文件管理器(三星) 存储(设置)

完整代码:

package spicysoftware.com.space;

import android.os.Environment;
import android.os.StatFs;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {

    StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String InternalFreeSpace = convertBytes(getInternalFreeSpace());
        Log.v("InternalFreeSpace : ", InternalFreeSpace);

        String InternalTotalSpace = convertBytes(getInternalTotalSpace());
        Log.v("InternalTotalSpace : ", InternalTotalSpace);

        String InternalUsedSpace = convertBytes(getInternalUsedSpace());
        Log.v("InternalUsedSpace …
Run Code Online (Sandbox Code Playgroud)

size storage android capacity android-internal-storage

3
推荐指数
1
解决办法
3630
查看次数

访问Android中的内部存储

我正在开发一个Android应用程序,需要显示默认相机文件夹中的图像.我的问题是我不知道如何找到相机照片内部默认存储文件夹.

当我找到它将手机连接到PC(它是没有SD卡的三星Galaxy S7)时,我看到图片存储在DCIM/Camera.但是,这不起作用.做:files = new File("DCIM/Camera/");导致应用程序说没有任何内容.

如何找到相机照片的默认内部存储文件夹?

android android-camera android-internal-storage

2
推荐指数
1
解决办法
1万
查看次数

无法在内部存储中找到保存到文本文件的数据,如何将文件保存在内部存储 android studio 中?

我想在我的 android 手机上创建一个文本文件并在其中写入一些文本。
当我点击按钮时,它说saved to /data/user/0/com.example.savetotextfile/files/example.txt
但我找不到这些文件夹。
大多数应用程序都在设备存储 > Android > 数据中,但我自己创建的应用程序不在那里。
我错过了许可吗?
我不想写入 SD 卡。

public class MainActivity extends AppCompatActivity {

    private static final String FILE_NAME = "example.txt";

    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
    }

    public void save(View v) {
        String text = editText.getText().toString();
        FileOutputStream fos = null;

        try {
            fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
            fos.write(text.getBytes());

            editText.getText().clear();
            Toast.makeText(this, "Saved to" + getFilesDir() + "/" + FILE_NAME, Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) { …
Run Code Online (Sandbox Code Playgroud)

android text-files android-external-storage android-internal-storage

2
推荐指数
1
解决办法
3510
查看次数