Przeglądaj źródła

PDFTools(Android) - 1.修复低安卓版本无法分享文件问题

liuxiaolong 1 rok temu
rodzic
commit
3f93b3e303

+ 11 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstamp/CAddCustomStampActivity.java

@@ -157,11 +157,21 @@ public class CAddCustomStampActivity extends AppCompatActivity implements View.O
     }
 
     private void saveCustomStamp() {
+        String content = "";
+        if (!TextUtils.isEmpty(stampTextView.getContent())){
+            content = stampTextView.getContent();
+        }else {
+            if (stampTextView.getDateSwitch() || stampTextView.getTimeSwitch()){
+                content = "";
+            }else {
+                content = "StampText";
+            }
+        }
         CTextStampBean textStampBean = new CTextStampBean(
                 stampTextView.getBgColor(),
                 stampTextView.getTextColor(),
                 stampTextView.getLineColor(),
-                stampTextView.getContent(),
+                content,
                 stampTextView.getDateStr(),
                 stampTextView.getDateSwitch(),
                 stampTextView.getTimeSwitch(),

+ 3 - 9
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/activity/CBasicActivity.java

@@ -190,20 +190,14 @@ public class CBasicActivity extends AppCompatActivity {
 
     protected @CPDFEditType int curEditMode = CPDFEditType.EDIT_CLOSE;
 
-    protected void showPageEdit(CPDFViewCtrl pdfView, boolean enterEdit) {
+
+    protected void showPageEdit(CPDFViewCtrl pdfView, boolean enterEdit, CPDFPageEditDialogFragment.OnBackLisener backListener) {
         curEditMode = pdfView.getCPdfReaderView().getLoadType();
         pdfView.exitEditMode();
         CPDFPageEditDialogFragment pageEditDialogFragment = CPDFPageEditDialogFragment.newInstance();
         pageEditDialogFragment.initWithPDFView(pdfView);
         pageEditDialogFragment.setEnterEdit(enterEdit);
-        pageEditDialogFragment.setOnBackListener(()->{
-            if (curEditMode > 0) {
-                CPDFEditManager editManager = pdfView.getCPdfReaderView().getEditManager();
-                if (!editManager.isEditMode()) {
-                    editManager.beginEdit(curEditMode);
-                }
-            }
-        });
+        pageEditDialogFragment.setOnBackListener(backListener);
         pageEditDialogFragment.show(getSupportFragmentManager(), "pageEditDialogFragment");
     }
 }

+ 2 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/CFileUtils.java

@@ -47,7 +47,7 @@ public class CFileUtils {
         //if save path folder not exists, create directory
         File dir = new File(savePath);
         if (!dir.exists()) {
-            if (!dir.mkdir()) {
+            if (!dir.mkdirs()) {
                 Log.d("FileUtils", "mkdir error: " + savePath);
                 return;
             }
@@ -241,9 +241,8 @@ public class CFileUtils {
             Intent intent = new Intent(Intent.ACTION_SEND);
             intent.setType(type);
             intent.putExtra(Intent.EXTRA_SUBJECT, title);
-            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
             intent.putExtra(Intent.EXTRA_STREAM, getUriBySystem(context, file));
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
             context.startActivity(Intent.createChooser(intent, title));
         } catch (ActivityNotFoundException e) {
             e.printStackTrace();

+ 7 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/activitycontracts/CImageResultContracts.java

@@ -14,6 +14,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Build;
+import android.os.Environment;
 import android.provider.MediaStore;
 
 import androidx.activity.result.contract.ActivityResultContract;
@@ -59,7 +60,12 @@ public class CImageResultContracts extends ActivityResultContract<CImageResultCo
                 intentCamera.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
             }
             intentCamera.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
-            File file = new File(context.getFilesDir(), "compdfkit" + File.separator + "temp" + File.separator +"camera_" + CDateUtil.getDataTime(CDateUtil.NORMAL_DATE_FORMAT) + ".png");
+            File file = null;
+            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
+                file = new File(Environment.getExternalStorageDirectory(), CFileUtils.CACHE_FOLDER + File.separator +"camera_" + CDateUtil.getDataTime(CDateUtil.NORMAL_DATE_FORMAT) + ".png");
+            }else {
+                file = new File(context.getFilesDir(), CFileUtils.CACHE_FOLDER + File.separator +"camera_" + CDateUtil.getDataTime(CDateUtil.NORMAL_DATE_FORMAT) + ".png");
+            }
             file.getParentFile().mkdirs();
             cameraUri = CFileUtils.getUriBySystem(context, file);
             intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri);

+ 9 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/task/CExtractAssetFileTask.java

@@ -2,10 +2,13 @@
 package com.compdfkit.tools.common.utils.task;
 
 import android.content.Context;
+import android.os.Build;
+import android.os.Environment;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.compdfkit.tools.BuildConfig;
 import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 
@@ -45,7 +48,12 @@ public class CExtractAssetFileTask {
             boolean overwriteExisting,
             @Nullable OnDocumentExtractedListener listener) {
         CThreadPoolUtils.getInstance().execute(() -> {
-            File pdfFile = new File(context.getFilesDir().getAbsoluteFile(), fileName);
+            File pdfFile = null;
+            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
+                 pdfFile = new File(Environment.getExternalStorageDirectory(),CFileUtils.CACHE_FOLDER + File.separator+ fileName);
+            }else {
+                 pdfFile = new File(context.getFilesDir().getAbsoluteFile(), fileName);
+            }
             if (!pdfFile.exists()) {
                 CFileUtils.copyFileFromAssets(context, assetPath, pdfFile.getParent(), fileName, overwriteExisting);
             }

+ 1 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfproperties/stamp/CPDFStampTextView.java

@@ -11,6 +11,7 @@ import android.graphics.RectF;
 import android.graphics.Shader;
 import android.text.Layout;
 import android.text.TextPaint;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;

+ 8 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/docseditor/pdfpageedit/CPDFPageEditDialogFragment.java

@@ -14,7 +14,9 @@ import static com.compdfkit.core.document.CPDFDocument.PDFDocumentError.PDFDocum
 
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
+import android.os.Environment;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseIntArray;
@@ -416,7 +418,12 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
         for (int i = 0; i < pagesArr.size(); i++) {
             pageNum[i] = pagesArr.keyAt(i);
         }
-        String filePath = getContext().getFilesDir().getAbsolutePath() + File.separator + getNewFileName(pageNum);
+        String filePath = null;
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
+            filePath =  new File(Environment.getExternalStorageDirectory(),CFileUtils.CACHE_FOLDER + File.separator + getNewFileName(pageNum)).getAbsolutePath();
+        }else {
+            filePath = getContext().getFilesDir().getAbsolutePath() + File.separator + getNewFileName(pageNum);
+        }
         CPDFDocument newDocument = CPDFDocument.createDocument(getContext());
         res = newDocument.importPages(pdfView.getCPdfReaderView().getPDFDocument(), pageNum, 0);
         try {

+ 1 - 0
ComPDFKit_Tools/src/main/res/layout/tools_edit_thumbnail_list_item.xml

@@ -54,6 +54,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginBottom="8dp"
+        android:layout_marginTop="4dp"
         android:background="@drawable/tools_thumbnail_item_page_tv_bg"
         android:paddingHorizontal="12dp"
         android:paddingVertical="2dp"

+ 16 - 2
PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java

@@ -219,7 +219,14 @@ public class MainActivity extends CBasicActivity {
             binding.pdfSearchToolBar.showKeyboard();
         });
         binding.pdfToolBar.setThumbnailBtnClickListener(v -> {
-            showPageEdit(binding.pdfView, false);
+            showPageEdit(binding.pdfView, false,()->{
+                if (curEditMode > 0 && binding.pdfToolBar.getMode() == CPreviewMode.Edit) {
+                    CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
+                    if (!editManager.isEditMode()) {
+                        editManager.beginEdit(curEditMode);
+                    }
+                }
+            });
         });
         binding.pdfToolBar.setBoTaBtnClickListener(v -> {
             binding.pdfView.getCPdfReaderView().removeAllAnnotFocus();
@@ -249,7 +256,14 @@ public class MainActivity extends CBasicActivity {
                 showDisplaySettings(binding.pdfView);
             });
             menuWindow.addItem(R.drawable.tools_page_edit, R.string.tools_page_edit_toolbar_title, v1 -> {
-                showPageEdit(binding.pdfView, true);
+                showPageEdit(binding.pdfView, true,()->{
+                    if (curEditMode > 0 && binding.pdfToolBar.getMode() == CPreviewMode.Edit) {
+                        CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
+                        if (!editManager.isEditMode()) {
+                            editManager.beginEdit(curEditMode);
+                        }
+                    }
+                });
             });
             menuWindow.addItem(R.drawable.tools_ic_document_info, R.string.tools_document_info, v1 -> {
                 showDocumentInfo(binding.pdfView);