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