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");//微信朋友圈,仅支持分享图片
本文介绍如何在Android应用中下载视频和图片并保存至本地,同时提供原生分享功能将内容发送到微信好友。文章包含了所需的XML布局权限设置,以及不同文件类型的MIME类型信息和分享路径的示例。
4134

被折叠的 条评论
为什么被折叠?



