Java 以外部意图/应用程序打开文件
在应用程序的Java 以外部意图/应用程序打开文件,java,android,file,android-intent,io,Java,Android,File,Android Intent,Io,在应用程序的fileDirectory中创建文件后,我想用Adobe Reader等外部应用程序打开它。为了实现这一点,我尝试使用下面代码中的Intent ContextWrapper cw = new ContextWrapper(getApplicationContext()); java.io.File fileItem = new java.io.File(cw.getFilesDir() + "/sync/arbitraryFileName.extension"); MimeType
fileDirectory
中创建文件后,我想用Adobe Reader等外部应用程序打开它。为了实现这一点,我尝试使用下面代码中的Intent
ContextWrapper cw = new ContextWrapper(getApplicationContext());
java.io.File fileItem = new java.io.File(cw.getFilesDir() + "/sync/arbitraryFileName.extension");
MimeTypeMap myMime = MimeTypeMap.getSingleton();
Intent newIntent = new Intent(Intent.ACTION_VIEW);
String fileExtension = StaticHelper.fileExt(((File) item).getFileName());
if (fileExtension != null) {
String mimeType = myMime.getMimeTypeFromExtension(fileExtension);
String bb = Uri.fromFile(fileItem).toString();
newIntent.setDataAndType(Uri.fromFile(fileItem), mimeType);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
getApplicationContext().startActivity(newIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "no extension found", Toast.LENGTH_SHORT).show();
}
但遗憾的是,这段代码不起作用:应用程序总是说文件不存在——但在设备的ADB外壳中,我可以找到与代码中使用的路径完全相同的文件。
我已经补充了
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在我的代码中,但它没有任何帮助。第三方应用程序无法访问您的应用程序的部分。使用类似于
FileProvider
的方法
此外:
- 将上述代码中出现的所有
替换为getApplicationContext()
。只有当您知道使用this
getApplicationContext()的确切原因时,才能使用
getApplicationContext()
- 摆脱
,因为您不需要它ContextWrapper
目标版本
为24或更高,你就不能将文件
Uri
(例如,Uri.fromFile()
)传递给其他应用程序。欢迎您将内容存储在当前位置。使用FileProvider
将此内容提供给其他应用程序。