gpt4 book ai didi

android - 具有未知内容类型的 ACTION_SEND Intent (*/* vs application/octet-stream)

转载 作者:行者123 更新时间:2023-11-30 00:23:42 26 4
gpt4 key购买 nike

当使用 ACTION_SEND Intent 共享未知文件类型时,是否应该在设置内容类型时使用 */*application/octet-stream

根据 MozillaComplete list of MIME types

Two primary MIME types are important for the role of default types:

  • text/plain is the default value for textual files. A textual file should be human-readable and must not contain binary data.
  • application/octet-stream is the default value for all other cases. An unknown file type should use this type. Browsers pay a particular care when manipulating these files, attempting to safeguard the user to prevent dangerous behaviors.

例子

Intent intent = new Intent(Intent.ActionSend);

Uri uri = Uri.FromFile(file);
intent.PutExtra(Intent.ExtraStream, uri);

string fileType = GetMimeTypeByUri(uri);
if (fileType == null)
{
fileType = "*/*"; // ?
fileType = "application/octet-stream"; // ?
fileType = "application/x-binary" // ?
}
intent.SetType(fileType);

StartActivity(Intent.CreateChooser(intent, "Send to..."));

在哪里

private String GetMimeTypeByUri(Uri uri)
{
if (uri.Scheme.Equals(ContentResolver.SchemeContent))
return ContentResolver.GetType(uri);
else
return Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(
Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(uri.Path).ToLower()
);
}
}

最佳答案

fileType = "* / *";

如果您使用“*/*”的 MIME 类型,而您无法从系统中确定它(它为空),它会触发适当的选择应用程序对话框。

fileType = "application/octet-stream";

通常,它将是一个应用程序或必须在应用程序中打开的文档,例如电子表格或文字处理器。 The "octet-stream" subtype is used to indicate that a body contains arbitrary binary data

fileType = "application/x-binary"

这只是重述“八位字节流”的一种非标准方式。

查看链接了解详情 MIME types , MIME Utils

希望这对你有帮助。

关于android - 具有未知内容类型的 ACTION_SEND Intent (*/* vs application/octet-stream),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45804966/

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