Here显示了如何在启动意图时提供默认选项。但我看不出this的差异,除了一个案例Intent.ACTION_VIEW
使用Intent.ACTION_SEND
和另一个案例Context context = Forms.Context;
var filePath = new File(filename);
var fileUri = Android.Net.Uri.FromFile(filePath);
string mimeType = Util.Helper.GetMIMEType(filename);
Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(fileUri, mimeType);
context.StartActivity(intent);
。这是我的代码:
Intent.createChooser
此外,我读到startActivityForResult()
没有提供默认选项,所以我删除了它,但仍然没有成功。 SO上的其他提示也没有帮助(例如使用Context context = Forms.Context;
var filePath = new File(filename);
var fileUri = Android.Net.Uri.FromFile(filePath);
string mimeType = Util.Helper.GetMIMEType(filename);
Intent intent = new Intent(Intent.ActionView);
intent.PutExtra(Intent.ExtraStream, fileUri);
intent.SetType(mimeType);
context.StartActivity(intent);
)。
这是平板电脑上的设置吗?我在Android 5.1.1上。
修改
现在我尝试了Elvis Xia的建议:
fileUri
文件未打开。相反,我得到一个像
一样的祝酒词无法获取文件名!
file:///storage/emulated/0/Documents/SomeApp/TempDocs/57761.7Z
例如mimeType
application/x-7z-compressed
为$(document).ready(function(){
tabilize();
});
。
答案 0 :(得分:1)
要回答"“默认情况下选择要使用的应用”并未显示在应用选择器中"部分:
如果从context.StartActivity(intent);
开始,android管理默认处理并将用户选择的默认值存储在应用本地数据中。您的应用程序无法使用api来操纵标准选择"
如果您使用Intent.createChooser(...)
,则没有默认机制。你总是得到选择器。
要了解Intent的工作原理,您可以使用intent-intercept中提供的Android开源应用fdroid app store
答案 1 :(得分:0)
从您的代码中,您正在尝试创建文件并通过Intent发送/共享该文件。问题是:Intent
无法直接共享文件。如果您想实现这一目标,则必须将该文件作为前期工作存储在设备上,并使用以下内容进行共享:
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportPath));
注意:exportPath
使用file://xxx.xx
架构。
如果您要发送的数据量不大,强烈建议您直接发送数据而不是文件。
更新:要在Android中创建文件,您需要致电file.createNewFile();
:
File file = new File(fileName);
file.CreateNewFile();
if (file.Exists())
{
var fileUri = Android.Net.Uri.FromFile(file);
string mimeType = Util.Helper.GetMIMEType(filename);
Intent intent = new Intent(Intent.ActionSend);
intent.PutExtra(Intent.ExtraStream, fileUri);
intent.SetType(mimeType);
context.StartActivity(intent);
}