Android 下载视频(图片)保存到本地,通过原生分享分享到微信好友

本文介绍如何在Android应用中下载视频和图片并保存至本地,同时提供原生分享功能将内容发送到微信好友。文章包含了所需的XML布局权限设置,以及不同文件类型的MIME类型信息和分享路径的示例。
    public class MainActivity extends AppCompatActivity {
    private Button down;
    private TextView mTextView;
    private CompleteReceiver  completeReceiver;
    private DownloadManager downloadManager;
    private long reference;
    private Button share;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        down = (Button)findViewById(R.id.down);

        mTextView = (TextView)findViewById(R.id.textView);

        share = (Button) findViewById(R.id.share);

        //下载任务
        String serviceString = Context.DOWNLOAD_SERVICE;
        //直接使用系统的下载管理器。是不是非常方便
        downloadManager = (DownloadManager)getBaseContext().getSystemService(serviceString);
        //下载
        down.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //可以是视频也可以是图片,分享时要填写正确的type类型,在下面我会列出各种类型
                Uri uri = Uri.parse("网络路径");
                DownloadManager.Request request =new DownloadManager.Request(uri);
                //通知栏的标题
                request.setTitle("视频下载");
                //显示通知栏的说明
                request.setDescription("测试的广告") ;
                request.setShowRunningNotification(false);//不显示通知栏(若不显示就不需要写上面的内容)
                request.setVisibleInDownloadsUi(true ) ;
                //下载到那个文件夹下,以及命名
                request.setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory().getPath(),"/xxx.mp4");
                //下载的唯一标识,可以用这个标识来控制这个下载的任务enqueue()开始执行这个任务
                reference = downloadManager.enqueue(request);
            }
        });
        share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//获取视频然后分享,这里是分享给微信好友
                String path = Environment.getExternalStorageDirectory()+"/storage/emulated/0/xxx.mp4";
                File file = new File(path);
                //Android7.0以上可能会出现获取uri的异常,可自己去网上找,这里就不多描述了
                Uri uriForFile = Uri.parse("file://" + file.toString());
                ComponentName comp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");
                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.setComponent(comp);
                shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                shareIntent.putExtra(Intent.EXTRA_STREAM, uriForFile);
                shareIntent.setType("audio/mp4a-latm");
                startActivity(Intent.createChooser(shareIntent, "分享视频"));
            }
        });
        /** 注册下载监听的广播 **/
        completeReceiver =new CompleteReceiver();
        IntentFilter filter =new IntentFilter();
        filter.addAction(DownloadManager.ACTION_NOTIFICATION_CLICKED);
        filter.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
        /** register download success broadcast **/
        registerReceiver(completeReceiver, filter);
    }

//下载监听
    class CompleteReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //下载完成之后监听
            String action = intent.getAction();
            //下载完成的监听
            if(action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){
                mTextView.setText("下载完成");
            }
            //点击通知栏,取消下载任务
            if(action.equals(DownloadManager.ACTION_NOTIFICATION_CLICKED)){
                downloadManager.remove((Long)reference) ;
            }
        }
    }
}

xml布局:

<Button
        android:id="@+id/down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下载" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/share"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="分享" />

//这是要添加的权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

下面是一些常见文件的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", "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"},  
{"", "*/*"}  

一些分享的页面路径

("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");//微信朋友
("com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity");//保存到QQ收藏
("com.tencent.mobileqq", "cooperation.qlink.QlinkShareJumpActivity");//QQ面对面快传
("com.tencent.mobileqq", "com.tencent.mobileqq.activity.qfileJumpActivity");//传给我的电脑
("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");//QQ好友或QQ群
("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");//微信朋友圈,仅支持分享图片
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值