Commit 197dd59e by mReturn

知识库详情页附件预览及下载

parent f91792bc
......@@ -87,6 +87,7 @@ dependencies {
// api 'cjt.library.wheel:camera:1.1.9'
api 'de.hdodenhof:circleimageview:2.2.0'
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
api 'com.github.delight-im:Android-AdvancedWebView:v3.2.1'
......
......@@ -20,6 +20,9 @@
android:name="com.dayu.base.ui.activity.ImgGalleryActivty"
android:screenOrientation="portrait" />
<activity
android:name="com.dayu.base.ui.activity.DocWebviewActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.dayu.base.ui.activity.VideoPreviewActivty"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize|keyboardHidden"
......
package com.dayu.base.ui.activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import com.dayu.baselibrary.R;
import com.dayu.common.Constants;
import im.delight.android.webview.AdvancedWebView;
public class DocWebviewActivity extends AppCompatActivity implements AdvancedWebView.Listener{
AdvancedWebView mWebView;
TextView tvTitle;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doc_webview);
mWebView = findViewById(R.id.webView);
tvTitle = findViewById(R.id.tv_title);
findViewById(R.id.titile_back).setOnClickListener(view -> finish());
mWebView.setListener(this, this);
mWebView.setMixedContentAllowed(false);
String docPath = getIntent().getStringExtra(Constants.PICURL);
String title = getIntent().getStringExtra(Constants.TITLE);
tvTitle.setText(title);
mWebView.loadUrl("https://view.officeapps.live.com/op/view.aspx?src="+docPath);
// mWebView.loadUrl("https://docs.google.com/viewer?url="+docPath);
}
@Override
public void onPageStarted(String url, Bitmap favicon) {
}
@Override
public void onPageFinished(String url) {
}
@Override
public void onPageError(int errorCode, String description, String failingUrl) {
}
@Override
public void onDownloadRequested(String url, String suggestedFilename, String mimeType, long contentLength, String contentDisposition, String userAgent) {
}
@Override
public void onExternalPageRequest(String url) {
}
}
......@@ -15,6 +15,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.dayu.baselibrary.R;
import com.dayu.widgets.FixedViewPager;
import com.github.chrisbanes.photoview.PhotoView;
import java.util.ArrayList;
......@@ -25,7 +26,7 @@ public class ImgGalleryActivty extends AppCompatActivity{
int selectIndex;
String currentImgUrl;
ViewPager vpImg;
FixedViewPager vpImg;
TextView tvPage;
public static void launch(Context context, String imgUrl) {
......
......@@ -42,37 +42,37 @@ public class Constants {
/**
* dev环境配置.
*/
public static String ENVIROMENT = "debug";
public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
public static String BASE_URL = "http://47.94.101.239:3112";
public static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
public static String CHECK_MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manyServiceResult";
public static String MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manySop";
public static String WEB_SOP_DETAIL = "http://47.94.101.239:9004/#/sopdetail";
public static String WEB_ZHI_SHI = "http://47.94.101.239:9004/#/detail";
public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=dev/video";
public static final boolean IS_DEBUG = true;
public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
public static int XLR_PID = 239; //小绿人商家id
// public static String ENVIROMENT = "debug";
// public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
// public static String BASE_URL = "http://47.94.101.239:3112";
// public static String WEB_SOP = "http://47.94.101.239:9004/#/sop";
// public static String CHECK_MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manyServiceResult";
// public static String MULTI_WEB_SOP = "http://47.94.101.239:9004/#/manySop";
// public static String WEB_SOP_DETAIL = "http://47.94.101.239:9004/#/sopdetail";
// public static String WEB_ZHI_SHI = "http://47.94.101.239:9004/#/detail";
// public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
// public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=dev/video";
// public static final boolean IS_DEBUG = true;
// public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
// public static int XLR_PID = 239; //小绿人商家id
/**
* uat测试环境配置.
*/
// public static String ENVIROMENT = "uat";
// public static int LOG_LEVEL = LogUtils.LEVEL_ALL;
// public static String BASE_URL = "http://47.95.223.6:3112";
// public static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
// public static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
// public static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
// public static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
// public static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
// public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
// public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=test/video";
// public static final boolean IS_DEBUG = false;
// public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
// public static int XLR_PID = 14; //小绿人商家id
public static String ENVIROMENT = "uat";
public static int LOG_LEVEL = LogUtils.LEVEL_ALL;
public static String BASE_URL = "http://47.95.223.6:3112";
public static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
public static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
public static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
public static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
public static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
public static final String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public static final String UP_VIDEO = "/file/uploadVideoOne?targetPath=test/video";
public static final boolean IS_DEBUG = false;
public static String VIDEO_SHARE_URL = "http://uat.kf.ai:9099/#/shareVideo?type=_type&id="; //uat 学习视频分享链接 type(课程: course 直播: live)
public static int XLR_PID = 14; //小绿人商家id
......
......@@ -127,6 +127,16 @@ public class CommonUtils {
Pattern p = Pattern.compile(reg);
return p.matcher(name).find();
}
/**
* 是否是文档
* @param name
* @return
*/
public static boolean isDoc(String name){
String reg = "(pdf|doc|docx|xls|xlsx)";
Pattern p = Pattern.compile(reg);
return p.matcher(name).find();
}
/**
......
package com.dayu.widgets;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class FixedViewPager extends ViewPager {
public FixedViewPager(@NonNull Context context) {
super(context);
}
public FixedViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return false ;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_finish"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:layout_width="match_parent"
android:layout_centerHorizontal="false"
android:layout_marginLeft="60dp"
android:layout_marginRight="20dp"
android:singleLine="true"
android:gravity="center"
android:text="" />
<ImageView
android:id="@+id/titile_back"
style="@style/title_image_back"
android:onClick="back" />
<TextView
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
android:text="1/1"
android:textSize="16sp" />
</RelativeLayout>
<im.delight.android.webview.AdvancedWebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
......@@ -34,7 +34,7 @@
android:textSize="16sp" />
</RelativeLayout>
<android.support.v4.view.ViewPager
<com.dayu.widgets.FixedViewPager
android:id="@+id/vp_img"
android:layout_width="match_parent"
android:layout_height="match_parent" />
......
......@@ -5,8 +5,8 @@ buildscript {
ext.build_tools_version = "27.0.3"
ext.min_sdk_version = 17
ext.target_sdk_version = 26
ext.version_code = 265
ext.verson_name = "2.6.5"
ext.version_code = 266
ext.verson_name = "2.6.6"
ext.gradle_version = '3.1.4'
ext.isReleaseMinify = false
ext.isDebugMinify = false
......
......@@ -85,6 +85,7 @@ public class KnowledgeCenterActivity extends BaseActivity<SImplePresenter, Activ
protected void convert(BaseViewHolder helper, KnowledgeListBean item) {
helper.setText(R.id.tv_title, item.getTitle());
helper.setText(R.id.tv_detail, item.getBrief());
helper.setText(R.id.tv_author, "贡献者: "+item.getCreated());
helper.setOnClickListener(R.id.tv_to_detail, view -> {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ID, item.getId());
......
package com.dayu.order.ui.activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.widget.LinearLayoutManager;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.dayu.base.api.Api;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.activity.ImgGalleryActivty;
import com.dayu.base.ui.activity.VideoPreviewActivty;
import com.dayu.base.ui.presenter.SImplePresenter;
import com.dayu.common.Constants;
import com.dayu.order.R;
import com.dayu.order.api.OrderService;
import com.dayu.order.api.protocol.bean.KnowledgeListBean;
import com.dayu.order.common.OrderConstant;
import com.dayu.order.databinding.ActivityKonwledgeDetailBinding;
import com.dayu.utils.ToastUtils;
import com.dayu.widgets.CustomDialog;
import java.util.ArrayList;
import java.util.List;
public class KnowledgeDetailActivity extends BaseActivity<SImplePresenter,ActivityKonwledgeDetailBinding> {
......@@ -57,6 +70,88 @@ public class KnowledgeDetailActivity extends BaseActivity<SImplePresenter,Activi
};
mBind.recyclerview.setLayoutManager(new LinearLayoutManager(this));
mBind.recyclerview.setAdapter(fileAdapter);
fileAdapter.setOnItemClickListener((adapter, view, position) -> {
KnowledgeListBean.FilesBean item = files.get(position);
switch (item.getType()){
case 1:
ImgGalleryActivty.launch(this,item.getUrl());
break;
case 2:
ArrayList<String> list = new ArrayList<>();
list.add(item.getUrl());
Intent intent = new Intent(this, VideoPreviewActivty.class);
intent.putStringArrayListExtra(Constants.BUNDLE_KEY_ID, list);
startActivity(intent);
break;
case 3:
if (item.getUrl().contains(".pdf")|| item.getUrl().contains(".PDF")){
Intent docIntent = new Intent(this, PdfWebViewActivity.class);
docIntent.putExtra(Constants.PICURL, item.getUrl());
docIntent.putExtra(OrderConstant.TITLE, item.getName());
startActivity(docIntent);
}else {
showDownloadDialog(item);
}
break;
}
});
}
}
//下载弹框
private void showDownloadDialog(KnowledgeListBean.FilesBean item) {
CustomDialog dialog = new CustomDialog(mActivity, R.style.CustomDialog, "确定下载该文件吗?", (dialog1, confirm) -> {
if (confirm) {
showToast("download");
downloadBySystem(item.getUrl(),item.getName());
}
dialog1.dismiss();
});
dialog.setTitle("下载文件");
dialog.show();
}
private void downloadBySystem(String url, String name) {
ToastUtils.showShortToast("开始下载");
// 指定下载地址
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
// 允许媒体扫描,根据下载的文件类型被加入相册、音乐等媒体库
request.allowScanningByMediaScanner();
// 设置通知的显示类型,下载进行时和完成后显示通知
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
// 设置通知栏的标题,如果不设置,默认使用文件名
// request.setTitle("This is title");
// 设置通知栏的描述
request.setDescription("正在下载");
// 允许在计费流量下下载
request.setAllowedOverMetered(true);
// 允许该记录在下载管理界面可见
request.setVisibleInDownloadsUi(true);
// 允许漫游时下载
request.setAllowedOverRoaming(true);
// 允许下载的网路类型
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI|DownloadManager.Request.NETWORK_MOBILE);
// 设置下载文件保存的路径和文件名
String fileName = name;
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
// 另外可选一下方法,自定义下载路径
// request.setDestinationUri()
// request.setDestinationInExternalFilesDir()
final DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
// 添加一个下载任务
long downloadId = downloadManager.enqueue(request);
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
//广播监听下载的各个状态
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
showToast("文件下载成功");
}
}
};
}
......@@ -98,6 +98,7 @@ public class KnowledgeQueryActivity extends BaseActivity<SImplePresenter, Activi
protected void convert(BaseViewHolder helper, KnowledgeListBean item) {
helper.setText(R.id.tv_title, FindUtils.findSearch(Color.parseColor("#FF5A4B"),item.getTitle(),keyStr));
helper.setText(R.id.tv_detail, FindUtils.findSearch(Color.parseColor("#FF5A4B"),item.getBrief(),keyStr));
helper.setText(R.id.tv_author, "贡献者: "+item.getCreated());
helper.setOnClickListener(R.id.tv_to_detail, view -> {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ID, item.getId());
......
package com.dayu.order.ui.activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
......@@ -91,7 +95,7 @@ public class PdfWebViewActivity extends DataBindingActivity<ActivityWebviewBindi
mPdfWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
ToastUtils.showShortToast("download "+docPath);
// ToastUtils.showShortToast("download "+docPath);
downloadBySystem(docPath,contentDisposition,mimeType);
}
});
......@@ -175,5 +179,17 @@ public class PdfWebViewActivity extends DataBindingActivity<ActivityWebviewBindi
final DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
// 添加一个下载任务
long downloadId = downloadManager.enqueue(request);
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
//广播监听下载的各个状态
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
ToastUtils.showShortToast("文件下载成功");
}
}
};
}
......@@ -13,6 +13,12 @@
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:layout_width="match_parent"
android:layout_centerHorizontal="false"
android:layout_marginLeft="60dp"
android:layout_marginRight="20dp"
android:singleLine="true"
android:gravity="center"
android:text="" />
<ImageView
......
......@@ -48,17 +48,34 @@
android:text="" />
</LinearLayout>
<TextView
android:id="@+id/tv_to_detail"
style="@style/common_text_style"
android:layout_width="65dp"
android:layout_height="30dp"
android:layout_gravity="right"
<LinearLayout
style="@style/ll_horizontal"
android:layout_marginLeft="6dp"
android:layout_marginTop="5dp"
android:background="@drawable/btn_blue_whitecontent"
android:gravity="center"
android:text="详情"
android:textColor="@color/text_common_blue" />
android:gravity="bottom">
<TextView
android:id="@+id/tv_author"
style="@style/common_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="3"
android:text="" />
<TextView
android:id="@+id/tv_to_detail"
style="@style/common_text_style"
android:layout_width="65dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:layout_marginLeft="10dp"
android:background="@drawable/btn_blue_whitecontent"
android:gravity="center"
android:text="详情"
android:textColor="@color/text_common_blue" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:padding="5dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_text"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment