当前位置: 代码迷 >> 综合 >> Android使用ShareIntent一键集成各平台多媒体分享。微信,qq,facebook,twitter 等。
  详细解决方案

Android使用ShareIntent一键集成各平台多媒体分享。微信,qq,facebook,twitter 等。

热度:89   发布时间:2023-12-17 08:12:23.0

前言:最近接手的项目 分享系统一塌糊涂,一个视频应用竟然只能分享图片?由于客户一直抱怨,查阅代码后,发现引导了好多第三方分享SDK,我全给删了,因为没必要。

Uri和FileProvider

分享就是告知 第三方应用一个Uri 这个Uri可以是视频,图片或者文件。
然后我们使用 Intent 将这个Uri 告知需要分享的第三方应用。

Uri和FileProvider 相关知识 不懂的请自行查阅 这里不赘述。
这里只讲一个Path转Uri的方法

//Uri 转换
Uri fileUri;File file = new File(filePath);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    fileUri = FileProvider.getUriForFile(this, "你的应用的包名" + ".fileProvider", file);
} else {
    fileUri = Uri.fromFile(file);
}

Intent

这里的Intent 也就是意图 。

当我构造一个意图结构体,向系统发送这个个意图,满足我条件的应用都可以响应这个意图。

具体代码如下

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory("android.intent.category.DEFAULT");
intent.putExtra(Intent.EXTRA_STREAM, fileUri);intent.setType("video/*");//这里标记为视频 因为我要分享一个视频 其他类型参考下边intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//授权第三方APP可以访问当前的文件startActivity(Intent.createChooser(intent, "Share Intent"));

如果你需要指定某个应用 你只需要指定包名 即可

intent.setPackage("第三方应用包名");

各种文件类型 你是什么文件 选择响应的类型即可

{
    ".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", "application/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", "video/mp4"},  
{
    ".mpc", "application/vnd.mpohun.certificate"},  
{
    ".mpe", "video/mpeg"},  
{
    ".mpeg", "video/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", "application/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"},  
{
    "", "*/*"}  

效果图

在这里插入图片描述

  相关解决方案