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 @@ - + +