我在我的应用程序中添加了一个按钮,该按钮应该可以打开手机的下载文件夹,然后您应该可以从同一应用程序中单击存储在此处的文件。现在我正在那里保存一些数据。
问题是;我无法打开文件夹中保存的文件。 我可以看到存储在此处的文件,但是当我按下其中一个时,您会立即返回到应用程序,而不是您按下的文件。
有什么我想念的吗?您不应该从另一个应用程序打开存储在外部存储中的文件吗?
我试图在manifest和checkSelfpermission中添加权限以在运行时进行检查,但是没有成功。
这是打开下载文件夹的按钮:
private void openSavedLocation(){
if (ContextCompat.checkSelfPermission(ExportAndImport.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(ExportAndImport.this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath());
intent.setDataAndType(uri, "text/xml");
startActivity(Intent.createChooser(intent, "Open Folder"));}
我可以在应用程序外部打开文件时完美地打开文件,而不是通过此“ createChooser”打开。我可能会缺少什么? 任何帮助表示赞赏。
答案 0 :(得分:0)
但是当我按下其中之一时,您立即回到应用程序,而不是您按下的文件
这就是您的代码所做的。 ACTION_GET_CONTENT
说:“让用户选择内容”。它不会说“在其他应用程序中打开该内容”。没有Intent
动作可以说“让用户选择一条内容,然后在其他应用程序中打开该内容”。
有什么我想念的吗?
如果您想尝试在其他应用程序中打开XML:
startActivityForResult()
请求使用startActivity()
,而不是ACTION_GET_CONTENT
(并摆脱createChooser()
位)onActivityResult()
以获得用户选择的结果RESULT_OK
中得到了onActivityResult()
,请创建一个ACTION_VIEW
Intent
,并用其从Uri
Intent
传递到onActivityResult()
,然后在startActivity()
ACTION_VIEW
Intent
相反,如果您的目标是在您的应用中打开此XML,则您将:
startActivityForResult()
请求使用startActivity()
,而不是ACTION_GET_CONTENT
(并摆脱createChooser()
位)onActivityResult()
以获得用户选择的结果RESULT_OK
中得到了onActivityResult()
,请从传递到Uri
的{{1}}中获取Intent
的内容,然后使用onActivityResult()
对ContentResolver
进行一些有用的操作(例如,Uri
读取内容)这是打开下载文件夹的按钮
openInputStream()
使用MIME类型。它不一定会兑现您提供的起始ACTION_GET_CONTENT
。