diff --git a/MathKeyboard/src/main/AndroidManifest.xml b/MathKeyboard/src/main/AndroidManifest.xml index e32c379..7f744b1 100644 --- a/MathKeyboard/src/main/AndroidManifest.xml +++ b/MathKeyboard/src/main/AndroidManifest.xml @@ -1,5 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/MathKeyboard/src/main/java/com/tianshaokai/mathkeyboard/utils/LatexUtil.java b/MathKeyboard/src/main/java/com/tianshaokai/mathkeyboard/utils/LatexUtil.java index 97cde59..fa98c46 100644 --- a/MathKeyboard/src/main/java/com/tianshaokai/mathkeyboard/utils/LatexUtil.java +++ b/MathKeyboard/src/main/java/com/tianshaokai/mathkeyboard/utils/LatexUtil.java @@ -4,7 +4,9 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; +import android.net.Uri; import android.os.Environment; +import android.support.v4.content.FileProvider; import android.text.TextUtils; import com.tianshaokai.jlatexmath.core.AjLatexMath; @@ -20,31 +22,31 @@ import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.logging.Logger; public class LatexUtil { public static String latexSavePath = ""; - public static void init(Context context){ - latexSavePath = Environment.getExternalStorageDirectory() + "/Android/data/" - + context.getPackageName() + "/files/latex/"; - File file = new File(latexSavePath); - if (!file.exists()){ + public static void init(Context context) { + latexSavePath = "/files/latex"; + File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), latexSavePath); + if (!file.exists()) { file.mkdirs(); } AjLatexMath.init(context); } - public static void asyncAnalysisLatex(final Context context, final String latexContent, final LatexCallback callback){ - asyncAnalysisLatex(context, latexContent, 16,150,callback); + public static void asyncAnalysisLatex(final Context context, final String latexContent, final LatexCallback callback) { + asyncAnalysisLatex(context, latexContent, 16, 150, callback); } - public static void asyncAnalysisLatex(final Context context, final String latexContent,final int margin, final LatexCallback callback){ - asyncAnalysisLatex(context, latexContent, 16,margin,callback); + public static void asyncAnalysisLatex(final Context context, final String latexContent, final int margin, final LatexCallback callback) { + asyncAnalysisLatex(context, latexContent, 16, margin, callback); } - public static void asyncAnalysisLatex(final Context context, final String latexContent, final int textSize,final int margin, final LatexCallback callback){ + public static void asyncAnalysisLatex(final Context context, final String latexContent, final int textSize, final int margin, final LatexCallback callback) { // Observable.create(new Observable.OnSubscribe() { // @Override @@ -80,14 +82,14 @@ public static void asyncAnalysisLatex(final Context context, final String latexC } public static synchronized String analysisLatex(Context context, String latexContent) { - return analysisLatex(context, latexContent,16,200); + return analysisLatex(context, latexContent, 16, 200); } - public static synchronized String analysisLatex(Context context, String latexContent,int margin) { - return analysisLatex(context, latexContent,16,margin); + public static synchronized String analysisLatex(Context context, String latexContent, int margin) { + return analysisLatex(context, latexContent, 16, margin); } - public static synchronized String analysisLatex(Context context,String latexContent,int textSize,int margin){ + public static synchronized String analysisLatex(Context context, String latexContent, int textSize, int margin) { String mLatexContent = latexContent; if (latexContent.contains("$")) { @@ -124,23 +126,25 @@ public static synchronized String analysisLatex(Context context,String latexCont return mLatexContent; } - private static String createImgTag(Context context, String latex, boolean isLeft,int textSize,int margin) { - File file = new File(latexSavePath); - if (!file.exists()) { - file.mkdirs(); + private static String createImgTag(Context context, String latex, boolean isLeft, int textSize, int margin) { + File directory = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), latexSavePath); + if (!directory.exists()) { + directory.mkdirs(); } // String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmssSSS").format(new Date()); // String filePath = latexSavePath + "IMG_" + timeStamp + ".png"; String fileName = stringToMD5(latex) + ".png"; - String filePath = latexSavePath + fileName; + String filePath = latexSavePath + "/" + fileName; // Logger.getLogger().d("--->filePath:" + filePath); - String imgTag = ""; - if (new File(filePath).exists()){ + File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), filePath); + String imgTag = ""; + if (file.exists()) { return imgTag; } try { - saveBitmap(context, latex, new File(filePath), isLeft,textSize,margin); + String absolutePath = saveBitmap(context, latex, file, isLeft, textSize, margin); + imgTag = ""; } catch (Exception e) { e.printStackTrace(); } @@ -148,7 +152,7 @@ private static String createImgTag(Context context, String latex, boolean isLeft return imgTag; } - private static void saveBitmap(Context context, String teX, File file, boolean isLeft,int textSize,int margin) { + private static String saveBitmap(Context context, String teX, File file, boolean isLeft, int textSize, int margin) { int w = context.getResources().getDisplayMetrics().widthPixels; int h = context.getResources().getDisplayMetrics().heightPixels; int align = TeXConstants.ALIGN_LEFT; @@ -173,7 +177,8 @@ private static void saveBitmap(Context context, String teX, File file, boolean i icon.paintIcon(g2, 0, 0); FileOutputStream fos = null; try { - fos = new FileOutputStream(file); + Uri copyUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file); + fos = (FileOutputStream) context.getContentResolver().openOutputStream(copyUri); image.compress(Bitmap.CompressFormat.PNG, 80, fos); } catch (FileNotFoundException e) { e.printStackTrace(); @@ -188,10 +193,12 @@ private static void saveBitmap(Context context, String teX, File file, boolean i } } } + return file.getAbsolutePath(); } /** * 将字符串转成MD5值 + * * @param string 需要转换的字符串 * @return 字符串的MD5值 */ @@ -218,7 +225,7 @@ public static String stringToMD5(String string) { return hex.toString(); } - public static void clearData(){ + public static void clearData() { try { FileUtil.delAllFile(latexSavePath); } catch (Exception e) { @@ -226,7 +233,7 @@ public static void clearData(){ } } - public interface LatexCallback{ + public interface LatexCallback { void onAnalysisLatex(String content); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 13d5e37..59342a8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -11,8 +12,11 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme"> - + android:theme="@style/AppTheme" + tools:replace="android:allowBackup"> + diff --git a/build.gradle b/build.gradle index 8d3ef8e..03abee7 100644 --- a/build.gradle +++ b/build.gradle @@ -4,10 +4,12 @@ buildscript { repositories { google() - jcenter() + maven { url 'https://developer.huawei.com/repo/' } //华为 push + //mavenCentral仓和jcenter仓的聚合仓 阿里云镜像(老) + maven { url 'https://maven.aliyun.com/nexus/content/groups/public' } } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:7.1.1' // NOTE: Do not place your application dependencies here; they belong @@ -18,7 +20,9 @@ buildscript { allprojects { repositories { google() - jcenter() + maven { url 'https://developer.huawei.com/repo/' } //华为 push + //mavenCentral仓和jcenter仓的聚合仓 阿里云镜像(老) + maven { url 'https://maven.aliyun.com/nexus/content/groups/public' } } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9a4163a..ffed3a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists