首页 > 编程知识 正文

android实现第三方分享,Android分享

时间:2023-05-06 16:42:29 阅读:165525 作者:1263

创建共享

创建Intent并将操作指定为Intent.ACTION_SEND。

valshareintent=intent (intent.action _ send ) )。

指定发送的内容和类型。

//传输文件采用流方式

intent.put extra (intent.extra _ stream,uri.fromfile(file ) fileurl ) ) )。

intent.type='*/* '

发送隐含意图,打开系统共享选择器。

context.start activity (share intent ) )。

获取文件类型(MimeType ) )。

共享文件时,通常需要设置文件类型。 缺省指定类型为*/*。 如果默认类型被共享,则共享将失败,因为某些App不支持此类型。 建议您根据文件路径设置文件类型。

一般文件的mimeType

{'.3gp ',' video/3gpp'},

{'.apk ',' application/vnd.Android.package-archive ' }

{'.asf ',' video/x-ms-asf'},

{'.avi ',' video/x-msvideo'},

{'.bin ',' application/octet-stream'},

{'.bmp ',' image/bmp'},

{'.c ',' text/plain'},

{'.class ',' application/octet-stream'},

{'.conf ',' text/plain'},

{'.cpp ',' text/plain'},

{'.doc ',' application/msword'},

{'.exe ',' application/octet-stream'}

{'.gif ',' image/gif'},

{'.gtar ',' application/x-gtar'} ',

{'.gz ',' application/x-gzip'}

{'.h ',' text/plain'},

{'.htm ',' text/html'},

{'.html ',' text/html'},

{'.jar ',' application/java-archive'} ';

{'.java ',' text/plain'},

{'.jpeg ',' image/jpeg'},

{'.jpg ',' image/jpeg'},

{'.js ',' APP/x-JavaScript ' },

{'.log ',' text/plain'},

{'.m3u ',' audio/x-mpegurl'},

{'.m4a ',' audio/mp4a-latm'},

{'.m4b ',' audio/mp4a-latm'},

{'.m4p ',' audio/mp4a-latm'},

{'.m4u ',' video/vnd.mpegurl'},

{'.m4v ',' video/x-m4v'},

{'.mov ',' video/quicktime'},

{'.mp2 ',' audio/x-mpeg'},

{'.mp3 ',' audio/x-mpeg'},

{'.mp4 ','视频/MP4 ' },

{'.mpc ',' application/vnd.MPO hun.certificate ' },

{'.mpe ',' video/mpeg'},

{'.mpeg ','视频/mpeg ' },

{'.mpg ',' video/mpeg'},

{'.mpg4',' video/mp4'},

{'.mpga ',' audio/mpeg'},

{'.msg ',' application/vnd.ms-outlook'}

{'.ogg ',' audio/ogg'},

{'.pdf ',' application/pdf'},

{'.png ',' image/png'},

{'.pps ',' application/vnd.ms-PowerPoint ' }

{'.ppt ',' application/vnd.ms-PowerPoint ' }

{'.prop ',' text/plain'},

{'.rar ',' application/x-rar-compressed'},

{'.rc ',' text/plain'},

{'.rmvb ',' audio/x-pn-realaudio'},

{'.rtf ',' applicat "

ion/rtf"},

{".sh", "text/plain"},

{".tar", "application/x-tar"},

{".tgz", "application/x-compressed"},

{".txt", "text/plain"},

{".wav", "audio/x-wav"},

{".wma", "audio/x-ms-wma"},

{".wmv", "audio/x-ms-wmv"},

{".wps", "application/vnd.ms-works"},

{".xml", "text/xml"},

{".xml", "text/plain"},

{".z", "application/x-compress"},

{".zip", "application/zip"},

{"", "*/*"}

方式一:通过 ContentResolver 查询 Android 系统提供的 ContentProvider 获取(方便但不稳定)

当 targetSdkVersion >= 24 时,

使用 Uri.fromFile(File file) 获取文件 URI 会报android.os.FileUriExposedException 异常

获取文件的 url

val shareFile = File(shareFilePath)

val fileUri = Uri.fromFile(shareFile)

获取系统的提供的 ContentResolver

val contentResolver = context!!.contentResolver

获取文件MimeType,如 image/png

val fileMimeType = contentResolver.getType(fileUri)

获取文件Type,如 txt

val mime = MimeTypeMap.getSingleton()

val fileType = mime.getExtensionFromMimeType(fileMimeType)

方式二:解析文件信息,通过匹配识别判断:

识别文件后缀,根据后缀名来判断文件类型。

获取文件头信息,转成十六进制字符串后判断文件类型。

object FileUtil {

/**

* 根据文件后缀回去MIME类型

*

* @param file file

* @return string

*/

public fun getMIMEType(file: File): String {

var type = "*/*"

val fName = file.name

//获取后缀名前的分隔符"."在fName中的位置。

val dotIndex = fName.lastIndexOf(".")

if (dotIndex < 0) {

return type

}

/* 获取文件的后缀名*/

val end = fName.substring(dotIndex, fName.length).toLowerCase()

if (TextUtils.isEmpty(end)) {

return type

}

//在MIME和文件类型的匹配表中找到对应的MIME类型。

for (i in MIME_MapTable.indices) {

if (end == MIME_MapTable[i][0]) {

type = MIME_MapTable[i][1]

break

}

}

return type

}

private val MIME_MapTable = arrayOf(

// {后缀名,MIME类型}

arrayOf(".3gp", "video/3gpp"),

arrayOf(".apk", "application/vnd.android.package-archive"),

arrayOf(".asf", "video/x-ms-asf"),

arrayOf(".avi", "video/x-msvideo"),

arrayOf(".bin", "application/octet-stream"),

arrayOf(".bmp", "image/bmp"),

arrayOf(".c", "text/plain"),

arrayOf(".class", "application/octet-stream"),

arrayOf(".conf", "text/plain"),

arrayOf(".cpp", "text/plain"),

arrayOf(".doc", "application/msword"),

arrayOf(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"),

arrayOf(".xls", "application/vnd.ms-excel"),

arrayOf(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),

arrayOf(".exe", "application/octet-stream"),

arrayOf(".gif", "image/gif"),

arrayOf(".gtar", "application/x-gtar"),

arrayOf(".gz", "application/x-gzip"),

arrayOf(".h", "text/plain"),

arrayOf(".htm", "text/html"),

arrayOf(".html", "text/html"),

arrayOf(".jar", "application/java-archive"),

arrayOf(".java", "text/plain"),

arrayOf(".jpeg", "image/jpeg"),

arrayOf(".jpg", "image/jpeg"), arrayOf(".js", "application/x-javascript"), arrayOf(".log", "text/plain"),

arrayOf(".m3u", "audio/x-mpegurl"), arrayOf(".m4a", "audio/mp4a-latm"), arrayOf(".m4b", "audio/mp4a-latm"),

arrayOf(".m4p", "audio/mp4a-latm"), arrayOf(".m4u", "video/vnd.mpegurl"), arrayOf(".m4v", "video/x-m4v"), arrayOf(".mov", "video/quicktime"),

arrayOf(".mp2", "audio/x-mpeg"), arrayOf(".mp3", "audio/x-mpeg"), arrayOf(".mp4", "video/mp4"),

arrayOf(".mpc", "application/vnd.mpohun.certificate"), arrayOf(".mpe", "video/mpeg"), arrayOf(".mpeg", "video/mpeg"),

arrayOf(".mpg", "video/mpeg"), arrayOf(".mpg4", "video/mp4"), arrayOf(".mpga", "audio/mpeg"), arrayOf(".msg", "application/vnd.ms-outlook"),

arrayOf(".ogg", "audio/ogg"),

arrayOf(".pdf", "application/pdf"), arrayOf(".png", "image/png"), arrayOf(".pps", "application/vnd.ms-powerpoint"),

arrayOf(".ppt", "application/vnd.ms-powerpoint"), arrayOf(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"),

arrayOf(".prop", "text/plain"),

arrayOf(".rc", "text/plain"), arrayOf(".rmvb", "audio/x-pn-realaudio"), arrayOf(".rtf", "application/rtf"),

arrayOf(".sh", "text/plain"),

arrayOf(".tar", "application/x-tar"), arrayOf(".tgz", "application/x-compressed"), arrayOf(".txt", "text/plain"),

arrayOf(".wav", "audio/x-wav"),

arrayOf(".wma", "audio/x-ms-wma"), arrayOf(".wmv", "audio/x-ms-wmv"), arrayOf(".wps", "application/vnd.ms-works"),

arrayOf(".xml", "text/plain"), arrayOf(".z", "application/x-compress"), arrayOf(".zip", "application/x-zip-compressed"), arrayOf("", "*/*"))

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。