mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-12 21:01:32 +08:00
安卓11+ 申请完整文件管理权限
This commit is contained in:
parent
b6f51d1569
commit
b4eabe72a1
@ -5,6 +5,8 @@
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="28"/>
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
||||
tools:ignore="ScopedStorage" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
|
||||
|
||||
@ -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<Intent> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -96,6 +96,8 @@
|
||||
<string name="key_use_volume_control_running">key_use_volume_control_running</string>
|
||||
<string name="text_use_volume_to_stop_running">Stop all scripts when volume changes</string>
|
||||
<string name="text_need_to_enable_accessibility_service">Need to enable Accessibility Service</string>
|
||||
<string name="text_need_manage_all_files_access">Manage All Files Permission</string>
|
||||
<string name="explain_all_files_access">Requires manage all files permission to manage all the code files</string>
|
||||
<string name="text_refresh">Refresh</string>
|
||||
<string name="notice_no_running_script"><![CDATA[No running script φ(>ω<*)]]></string>
|
||||
<string name="text_checking_update">Checking for updates</string>
|
||||
|
||||
@ -104,6 +104,8 @@
|
||||
<string name="key_use_volume_control_running">key_use_volume_control_running</string>
|
||||
<string name="text_use_volume_to_stop_running">音量上键停止所有脚本</string>
|
||||
<string name="text_need_to_enable_accessibility_service">需要启用无障碍服务</string>
|
||||
<string name="text_need_manage_all_files_access">需要所有文件的管理权限</string>
|
||||
<string name="explain_all_files_access">软件需要所有文件的管理权限才能正常进行编辑、修改、删除脚本等操作,如果不授予相关权限将无法查看和运行脚本。</string>
|
||||
<string name="text_import_fail">导入失败</string>
|
||||
<string name="text_no_brower">没有浏览器耶o(╯□╰)o快去安装一个吧</string>
|
||||
<string name="text_refresh">刷新</string>
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -5,7 +5,9 @@
|
||||
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
||||
tools:ignore="ScopedStorage" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
|
||||
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user