This commit is contained in:
2025-11-18 15:12:24 +08:00
parent c173c425ce
commit a7d2035e70
1361 changed files with 367452 additions and 0 deletions
@@ -0,0 +1,160 @@
package cn.shangyu.gdxzExpert.activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Build;
import android.view.View;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.gyf.immersionbar.ImmersionBar;
import java.io.File;
import cn.shangyu.gdxzExpert.R;
import cn.shangyu.gdxzExpert.base.BaseActivity;
import cn.shangyu.gdxzExpert.utils.ToastUtil;
import cn.shangyu.gdxzExpert.utils.UIUtils;
import cn.shangyu.gdxzExpert.widget.LoadingPage;
/**
* Created by wangchengxin on 2018/11/8.
*/
public class PdfViewActivity extends BaseActivity {
private String path;
private File file;
@Override
public void setTitle() {
String title = getIntent().getExtras().getString("title");
top_title.setText(title);
top_right.setVisibility(View.VISIBLE);
top_right.setImageResource(R.drawable.share_icon);
top_right.setOnClickListener(this);
}
@Override
public View onCreateSuccessedView() {
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init();
View view = UIUtils.inflate(R.layout.activity_pdfview);
path = getIntent().getExtras().getString("path");
// Log.d("gdxzfile",path);
file = new File(path);
PDFView pdfView = view.findViewById(R.id.pdfView);
pdfView.fromFile(file).defaultPage(0).onPageChange(new OnPageChangeListener() {
@Override
public void onPageChanged(int page, int pageCount) {
ToastUtil.showMessage((page+1) + " / " + pageCount);
}
}) .load();
// initView(view);
return view;
}
private void initView(View view) {
PDFView pdfView = view.findViewById(R.id.pdfView);
pdfView.fromFile(file).defaultPage(0).onPageChange(new OnPageChangeListener() {
@Override
public void onPageChanged(int page, int pageCount) {
ToastUtil.showMessage((page+1) + " / " + pageCount);
}
}) .load();
}
@Override
public LoadingPage.ResultState onLoad() {
return LoadingPage.ResultState.STATE_SUCCESSED;
}
@Override
protected void processClick(View v) {
switch (v.getId()){
case R.id.top_right:
shareFile(PdfViewActivity.this,file);
break;
}
}
public void shareFile(Context context, File file) {
if (null != file && file.exists()) {
Intent share = new Intent(Intent.ACTION_SEND);
// Intent share = new Intent(Intent.ACTION_VIEW);
// share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// String s2 = null;
// try {
// s2 = new String(path.getBytes(),"utf-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// if(Build.VERSION.SDK_INT >= 24){
// // 适配android7.0 ,不能直接访问原路径
// // 需要对intent 授权
// share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// share.setDataAndType(FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider",new File(s2)),"application/octet-stream");
// }
// else{
// share.setDataAndType(Uri.fromFile(new File(s2)), "application/octet-stream");
// }
Uri uri ;
// Uri uri = Uri.fromFile(file);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
{
uri = androidx.core.content.FileProvider
.getUriForFile(this, "cn.shangyu.gdxzExpert.fileprovider", file);
}
else
{
uri = Uri.fromFile(file);
}
share.putExtra(Intent.EXTRA_STREAM,uri );
share.setType("image/jpeg");
share.setType("application/octet-stream");
// Log.d("gdxzfile","uri "+uri);
// share.setPackage("com.tencent.mm");
// context.startActivity(share);
// share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
// share.putExtra("Kdescription", "pdf文档");//微信朋友圈专用
// share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(share, "分享文件"));
// Intent intent=new Intent(Intent.ACTION_SEND);
// intent.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
// intent.putExtra(Intent.EXTRA_SUBJECT, "Share");
// intent.putExtra(Intent.EXTRA_TEXT, "I have successfully share my message through my app");
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// context.startActivity(Intent.createChooser(intent, "fdasfsadfsa"));
} else {
Toast.makeText(context, "分享文件不存在", Toast.LENGTH_SHORT).show();
}
}
// 根据文件后缀名获得对应的MIME类型。
private static String getMimeType(String filePath) {
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
String mime = "*/*";
if (filePath != null) {
try {
mmr.setDataSource(filePath);
mime = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE);
} catch (IllegalStateException e) {
return mime;
} catch (IllegalArgumentException e) {
return mime;
} catch (RuntimeException e) {
return mime;
}
}
return mime;
}
}