gpt4 book ai didi

android - 如何使用已安装的应用程序打开文件?

转载 作者:行者123 更新时间:2023-11-30 02:16:42 25 4
gpt4 key购买 nike

我想使用 Android 中安装的应用程序打开给定文件。我怎样才能做到这一点?

我正在使用来自 Google 的以下代码,但它始终返回 “没有应用程序可以打开此文件”。但是,如果我在其他文件管理器中打开该文件,我会看到打开该文件的不同选项。代码:

public void open(View v) {
String name = ((TextView) v).getText().toString();
File f = new File(path + name);
if (f.isDirectory()) {
showFiles(f);
} else if (f.isFile()) {
Intent openFileIntent = new Intent(Intent.ACTION_VIEW);
openFileIntent.setData(Uri.fromFile(f));
if (openFileIntent.resolveActivity(getPackageManager()) != null) {
startActivity(openFileIntent);
} else {
Toast.makeText(this, "No app to open this file.",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "Selected item is not a file.",
Toast.LENGTH_SHORT).show();
}
}

最佳答案

您应该指定一个 MIME键入以便 Android 知道哪个应用程序能够打开/查看文件。这应该适合你:

public void open(View v) {
String name = ((TextView) v).getText().toString();
File f = new File(path + name);
if (f.isDirectory()) {
showFiles(f);
} else if (f.isFile()) {
Intent openFileIntent = new Intent(Intent.ACTION_VIEW);
openFileIntent.setDataAndType(Uri.fromFile(f), getMimeTypeFromFile(f));
if (openFileIntent.resolveActivity(getPackageManager()) != null) {
startActivity(openFileIntent);
} else {
Toast.makeText(this, "No app to open this file.",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "Selected item is not a file.",
Toast.LENGTH_SHORT).show();
}
}

private String getMimeTypeFromFile(File f){
Uri fileUri = Uri.fromFile(f);
String fileExtension
= MimeTypeMap.getFileExtensionFromUrl(fileUri.toString());
String fileType
= MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
if (fileType == null)
fileType = "*/*";
return fileType;
}

关于android - 如何使用已安装的应用程序打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com