我正在尝试使用隐式意图ACTION_SEND将其他应用程序中的图像共享到我的应用程序.
在从Chrome浏览器共享搜索图像时,应用会收到内容URI的意图,如下所示:
content://com.android.chrome.FileProvider/images/screenshot/1457448067808912906311.jpg
如何从此类内容URI中获取文件路径?所有其他应用程序,如Facebook,Google +都在这样做.我正在使用FileChooser获取其他类型的内容URI的文件路径(例如,来自Gallery).
在没有太多帮助的情况下到处寻找.有人可以建议如何使用这些内容URI吗?
我正在尝试以这种方式获取文件:
final Intent chooseFileIntent = new Intent(Intent.ACTION_GET_CONTENT);
String[] mimetypes = {"application/pdf"};
chooseFileIntent.setType("*/*");
chooseFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
if (chooseFileIntent.resolveActivity(activity
.getApplicationContext().getPackageManager()) != null) {
chooseFileIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
activity.startActivityForResult(chooseFileIntent, Uploader.PDF);
}
Run Code Online (Sandbox Code Playgroud)
然后在onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
根据许多线程,我应该从意图中获取文件名 with data.getData().getPath(),我期望的文件名是my_file.pdf,但我得到的是:
/document/acc=1;doc=28
那么该怎么办?谢谢你的帮助。
我正在开发一个应用程序,我希望能够在该应用程序的.txt文件中导出和导入一些数据。该应用程序的最低API为21。
导出部分效果很好,但是导入部分遇到了麻烦。
我打开文件资源管理器:
butImportPatient.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
startActivityForResult(intent, IMPORTPATIENT_ACTIVITY_REQUEST_CODE);
}
});
Run Code Online (Sandbox Code Playgroud)
这看起来像在工作。
但是我的onActivityResult不起作用,我没有找到如何从Uri获取文件。
现在,这是我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMPORTPATIENT_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
File file = new File(data.getData().getPath()) ;
String path = file.getAbsolutePath() ;
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(path));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append("\n"); …Run Code Online (Sandbox Code Playgroud)