diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3d521695..78300f94 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,8 @@
+
diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java
index ceb9320a..b1255d94 100644
--- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java
+++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java
@@ -3,9 +3,13 @@ package org.autojs.autojs.ui.main;
import android.Manifest;
import android.annotation.SuppressLint;
+import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.os.Environment;
import android.provider.Settings;
import android.util.Log;
import android.view.Gravity;
@@ -13,10 +17,12 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import com.afollestad.materialdialogs.MaterialDialog;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import com.stardust.app.FragmentPagerAdapterBuilder;
import com.stardust.app.OnActivityResultDelegate;
+import com.stardust.autojs.core.floaty.AccessibilityFloatyService;
import com.stardust.autojs.core.permission.OnRequestPermissionsResultCallback;
import com.stardust.autojs.core.permission.PermissionRequestProxyActivity;
import com.stardust.autojs.core.permission.RequestPermissionCallbacks;
@@ -55,6 +61,8 @@ import org.greenrobot.eventbus.Subscribe;
import java.util.Arrays;
import java.util.regex.Pattern;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
@@ -140,9 +148,33 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
private void checkPermissions() {
- checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ // 先判断有没有权限
+ if (!Environment.isExternalStorageManager()) {
+ ActivityResultLauncher launcher = registerForActivityResult(
+ new ActivityResultContracts.StartActivityForResult(), result -> {
+ if (Environment.isExternalStorageManager()) {
+ AutoJs.getInstance().setLogFilePath(Pref.getScriptDirPath(), BuildConfig.DEBUG);
+ Explorers.workspace().refreshAll();
+ }
+ });
+ new MaterialDialog.Builder(this)
+ .title(R.string.text_need_manage_all_files_access)
+ .content(R.string.explain_all_files_access)
+ .positiveText(R.string.text_go_to_setting)
+ .negativeText(R.string.text_cancel)
+ .onPositive((dialog, which) -> {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ intent.setData(Uri.parse("package:" + getApplicationContext().getPackageName()));
+ launcher.launch(intent);
+ }).show();
+ }
+ } else {
+ checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
}
+
private void showAccessibilitySettingPromptIfDisabled() {
if (AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) {
return;
@@ -240,6 +272,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
FloatyWindowManger.hideCircularMenu();
ForegroundService.stop(this);
stopService(new Intent(this, FloatyService.class));
+ stopService(new Intent(this, AccessibilityFloatyService.class));
AutoJs.getInstance().getScriptEngineService().stopAll();
}
@@ -258,6 +291,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
mActivityResultMediator.onActivityResult(requestCode, resultCode, data);
}
@@ -269,6 +303,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
if (getGrantResult(Manifest.permission.READ_EXTERNAL_STORAGE, permissions, grantResults) == PackageManager.PERMISSION_GRANTED) {
Explorers.workspace().refreshAll();
+ AutoJs.getInstance().setLogFilePath(Pref.getScriptDirPath(), BuildConfig.DEBUG);
}
}
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index fcd0544c..6ea2d472 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -96,6 +96,8 @@
key_use_volume_control_running
Stop all scripts when volume changes
Need to enable Accessibility Service
+ Manage All Files Permission
+ Requires manage all files permission to manage all the code files
Refresh
ω<*)]]>
Checking for updates
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e2503abd..d26be7fc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -104,6 +104,8 @@
key_use_volume_control_running
音量上键停止所有脚本
需要启用无障碍服务
+ 需要所有文件的管理权限
+ 软件需要所有文件的管理权限才能正常进行编辑、修改、删除脚本等操作,如果不授予相关权限将无法查看和运行脚本。
导入失败
没有浏览器耶o(╯□╰)o快去安装一个吧
刷新
diff --git a/autojs/src/main/java/com/stardust/autojs/AutoJs.java b/autojs/src/main/java/com/stardust/autojs/AutoJs.java
index 4f35ec84..4e074661 100644
--- a/autojs/src/main/java/com/stardust/autojs/AutoJs.java
+++ b/autojs/src/main/java/com/stardust/autojs/AutoJs.java
@@ -269,7 +269,7 @@ public abstract class AutoJs {
}
}
- protected void setLogFilePath(String path, boolean isDebug) {
+ public void setLogFilePath(String path, boolean isDebug) {
LogConfigurator logConfigurator = new LogConfigurator();
String pid = String.valueOf(android.os.Process.myPid());
logConfigurator.setFilePattern("%d - [%p]\t[" + pid + "] %c - %m%n");
diff --git a/inrt/src/main/AndroidManifest.xml b/inrt/src/main/AndroidManifest.xml
index 22d5e96c..51161e62 100644
--- a/inrt/src/main/AndroidManifest.xml
+++ b/inrt/src/main/AndroidManifest.xml
@@ -5,7 +5,9 @@
-
+
+