我正在尝试编写一个 Android 应用程序,它需要查询用户以选择某些数据文件所在的目录。
执行以下代码时,将启动 Android 文件选择器并选择一个目录。
返回的 URI 对我来说看起来有效:
内容://com.android.externalstorage.documents/tree/primary%3ANotifications
然后,当我查询内容提供商时,它崩溃了。
返回的错误是这样的:
Run Code Online (Sandbox Code Playgroud)Caused by: java.lang.UnsupportedOperationException: Unsupported Uri content://com.android.externalstorage.documents/tree/primary%3ANotifications
这是我的代码:
package com.muddco.fptest2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
static String TAG = "TEST123";
public static TextView textView, uriView;
public Object act = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.view1);
uriView = (TextView) findViewById(R.id.uriview);;
showFileChooser();
}
private static …
Run Code Online (Sandbox Code Playgroud) 我有代码通过发出带有 ACTION_OPEN_DOCUMENT 意图的 createChooser 来启动文件选择器。
这是有效的代码:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*.*");
startActivityForResult(Intent.createChooser(intent, "Choose .xyz file"), RQS_OPEN_XYZ_FILE);
Run Code Online (Sandbox Code Playgroud)
这将打开一个文件选择器,允许用户选择任何类型的文件。
我想让文件选择器将用户的选择限制为仅以“.xyz”结尾的文件。
如果这是“标准”文件类型,我可以按 MIME 类型过滤它。例如,如果我添加 setType("media/jpeg"),则文件选择器中只能选择 jpeg 文件。但是,在这种情况下,没有与“.xyz”对应的 MIME 类型。
有人建议我尝试使用数据路径过滤器,但我无法弄清楚如何实现它。
有可能做到这一点吗?如果是这样,我该怎么做?
谢谢!
我需要访问 我的 Android Studio 项目中的DocumentFile类。我花了很长时间才能解决它。
Andriod 开发人员文档说我需要导入"androidx.documentfile.provider.DocumentFile",但是当我添加导入时,我被告知它无法解析该导入。它不喜欢“.documentfile”。部分。
经过大量的拔毛和咬牙切齿之后,我偶然发现我需要添加对"com.google.android.material:material:1.0.0"的实现依赖 。一旦我将它添加到我的构建文件中,包含就解决了,我可以访问 DocumentFile 类。
为什么是这样?说明我需要这样做的文档在哪里?或者,我应该做一些不同的事情来解决 DocumentFile 吗?
对此的任何见解将不胜感激。
我正在用 JavaScript 编写一个 Excel 插件。
我需要做的是找到当前选定的单元格,然后创建一个 4 列宽、X 行高的范围对象,选定的单元格位于所选内容的左上角。
我知道如何找到当前选定的单元格,但我不知道如何扩展该选择或创建一个我需要的大小的新范围。
任何援助将不胜感激!
我正在尝试编写一个 Android 应用程序,除其他外,它需要读取文件并将其写入“外部”存储。
虽然我能够浏览并选择外部存储上的文件夹,但每次尝试访问该文件时,都会收到“权限被拒绝”I/O 异常。
我已在我的应用程序清单中包含以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
我还在 Android 中启用了该应用程序的存储权限。
我正在 Chromebook 上进行开发,因此无法访问模拟器。因此,我通过 USB-C 电缆在手机(Pixel 3)上测试和调试我的应用程序。我还可以生成 APK 并将其旁加载到我的 Chromebook 上,但我无法通过这种方式进行调试。
以下代码示例是我从互联网上收集的。
public void writeFileExternalStorage(View view) {
String cashback = "Get 2% cashback on all purchases from xyz \n Get 10% cashback on travel from dhhs shop";
String state = Environment.getExternalStorageState();
//external storage availability check
if (!Environment.MEDIA_MOUNTED.equals(state)) {
return;
}
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOCUMENTS), filenameExternal);
FileOutputStream outputStream = null;
try {
file.createNewFile();
//second argument of FileOutputStream …
Run Code Online (Sandbox Code Playgroud)