package Ġio . github . chen fe i 0 9 2 8 . content Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġandroidx . core . content . File Provider Ċ import Ġio . github . chen fe i 0 9 2 8 . io . File Util Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġ@ author ĠChen Fe i ( chen fe i 0 9 2 8 @ gmail . com ) Ċ Ġ* Ġ@ date Ġ 2 0 1 9 - 1 1 - 1 9 Ġ 1 3 : 3 2 Ċ Ġ*/ Ċ class ĠFile Provider Kt Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfind Manifest File Provider Scheme ( context : ĠContext ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Manifest File Provider Scheme ( context , ĠFile Provider :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< F Ġ: ĠFile Provider > Ġfind Manifest File Provider Scheme ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġclazz : ĠClass < F > ĊĠĠĠĠĠĠĠ Ġ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Provider ClassName Ġ= Ġclazz :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . package Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . packageName , ĠPackage Manager . GET _ PRO VID ERS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). providers . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġ== Ġfile Provider ClassName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. authority ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Uri FromFile ( context : ĠContext , Ġfile : ĠFile ): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Provider Scheme Ġ= Ġfind Manifest File Provider Scheme ( context ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Provider . get Uri For File ( context , Ġfile Provider Scheme , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . from File ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Share Intent ( label : ĠString , Ġfile Uri : ĠUri ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMIME Ġ ç±»åŀĭ ï¼ļ Ġhttp :// www . w 3 school . com . cn / media / media _ m im eref . asp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= ĠMime TypeMap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Singleton () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get MimeType From Extension ( File Util . getFile Extension From Url ( file Uri . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ SUBJECT , Ġlabel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ STREAM , Ġfile Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ