txa-settings-permission 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/online/txa/settingspermission/TxaSettingsPermissionPlugin.java +57 -0
- package/dist/cjs/definitions.d.ts +14 -0
- package/dist/cjs/web.d.ts +4 -0
- package/dist/cjs/web.js +8 -0
- package/dist/esm/definitions.d.ts +14 -0
- package/dist/esm/web.d.ts +4 -0
- package/dist/esm/web.js +8 -0
- package/dist/plugin.cjs.js +8 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +8 -0
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/definitions.ts +14 -0
- package/src/web.ts +9 -0
package/android/src/main/java/online/txa/settingspermission/TxaSettingsPermissionPlugin.java
CHANGED
|
@@ -642,6 +642,27 @@ public class TxaSettingsPermissionPlugin extends Plugin {
|
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
644
|
|
|
645
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
646
|
+
// requestPermission: yêu cầu quyền động
|
|
647
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
648
|
+
|
|
649
|
+
@PluginMethod
|
|
650
|
+
public void requestPermission(PluginCall call) {
|
|
651
|
+
String permission = call.getString("permission");
|
|
652
|
+
if (permission == null) {
|
|
653
|
+
call.reject("TXA_ERR_PARAM: Thiếu tham số 'permission'", "MISSING_PARAM");
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
if ("install_unknown_apps".equals(permission)) {
|
|
658
|
+
openInstallUnknownApps(call);
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// Có thể bổ sung request runtime permission tại đây
|
|
663
|
+
call.reject("TXA_ERR: Quyền " + permission + " không được hỗ trợ trong requestPermission.");
|
|
664
|
+
}
|
|
665
|
+
|
|
645
666
|
// ─────────────────────────────────────────────────────────────────────────
|
|
646
667
|
// checkMultiplePermissions: check nhiều quyền 1 lúc
|
|
647
668
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -1048,6 +1069,42 @@ public class TxaSettingsPermissionPlugin extends Plugin {
|
|
|
1048
1069
|
}
|
|
1049
1070
|
}
|
|
1050
1071
|
|
|
1072
|
+
@PluginMethod
|
|
1073
|
+
public void readdir(PluginCall call) {
|
|
1074
|
+
String path = call.getString("path");
|
|
1075
|
+
if (path == null) {
|
|
1076
|
+
call.reject("Path is required");
|
|
1077
|
+
return;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
try {
|
|
1081
|
+
File dir = getFileObject(path);
|
|
1082
|
+
if (!dir.exists() || !dir.isDirectory()) {
|
|
1083
|
+
call.reject("Directory does not exist or is not a directory");
|
|
1084
|
+
return;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
File[] files = dir.listFiles();
|
|
1088
|
+
JSArray filesArray = new JSArray();
|
|
1089
|
+
|
|
1090
|
+
if (files != null) {
|
|
1091
|
+
for (File file : files) {
|
|
1092
|
+
JSObject fileObj = new JSObject();
|
|
1093
|
+
fileObj.put("name", file.getName());
|
|
1094
|
+
fileObj.put("type", file.isDirectory() ? "directory" : "file");
|
|
1095
|
+
fileObj.put("size", file.length());
|
|
1096
|
+
filesArray.put(fileObj);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
JSObject result = new JSObject();
|
|
1101
|
+
result.put("files", filesArray);
|
|
1102
|
+
call.resolve(result);
|
|
1103
|
+
} catch (Exception e) {
|
|
1104
|
+
call.reject("Failed to read directory: " + e.getMessage());
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1051
1108
|
@PluginMethod
|
|
1052
1109
|
public void getUri(PluginCall call) {
|
|
1053
1110
|
String path = call.getString("path");
|
|
@@ -82,6 +82,16 @@ export interface GetUriOptions {
|
|
|
82
82
|
export interface GetUriResult {
|
|
83
83
|
uri: string;
|
|
84
84
|
}
|
|
85
|
+
export interface ReaddirOptions {
|
|
86
|
+
path: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ReaddirResult {
|
|
89
|
+
files: {
|
|
90
|
+
name: string;
|
|
91
|
+
type: 'file' | 'directory';
|
|
92
|
+
size: number;
|
|
93
|
+
}[];
|
|
94
|
+
}
|
|
85
95
|
export interface CheckRuntimePermissionOptions {
|
|
86
96
|
/** Tên đầy đủ của permission, vd: "android.permission.CAMERA" */
|
|
87
97
|
permission: string;
|
|
@@ -142,6 +152,9 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
142
152
|
openStorageSettings(): Promise<OpenSettingsResult>;
|
|
143
153
|
openDisplaySettings(): Promise<OpenSettingsResult>;
|
|
144
154
|
openSoundSettings(): Promise<OpenSettingsResult>;
|
|
155
|
+
requestPermission(options: {
|
|
156
|
+
permission: string;
|
|
157
|
+
}): Promise<PermissionResult | OpenSettingsResult>;
|
|
145
158
|
checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult>;
|
|
146
159
|
checkMultiplePermissions(options: CheckMultiplePermissionsOptions): Promise<CheckMultiplePermissionsResult>;
|
|
147
160
|
checkAllRequired(): Promise<CheckAllRequiredResult>;
|
|
@@ -153,6 +166,7 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
153
166
|
path: string;
|
|
154
167
|
recursive?: boolean;
|
|
155
168
|
}): Promise<void>;
|
|
169
|
+
readdir(options: ReaddirOptions): Promise<ReaddirResult>;
|
|
156
170
|
getUri(options: GetUriOptions): Promise<GetUriResult>;
|
|
157
171
|
installApk(options: {
|
|
158
172
|
path: string;
|
package/dist/cjs/web.d.ts
CHANGED
|
@@ -41,6 +41,9 @@ export declare class TxaSettingsPermissionWeb extends WebPlugin implements TxaSe
|
|
|
41
41
|
openStorageSettings(): Promise<OpenSettingsResult>;
|
|
42
42
|
openDisplaySettings(): Promise<OpenSettingsResult>;
|
|
43
43
|
openSoundSettings(): Promise<OpenSettingsResult>;
|
|
44
|
+
requestPermission(options: {
|
|
45
|
+
permission: string;
|
|
46
|
+
}): Promise<PermissionResult | OpenSettingsResult>;
|
|
44
47
|
checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult>;
|
|
45
48
|
checkMultiplePermissions(options: CheckMultiplePermissionsOptions): Promise<CheckMultiplePermissionsResult>;
|
|
46
49
|
checkAllRequired(): Promise<CheckAllRequiredResult>;
|
|
@@ -52,6 +55,7 @@ export declare class TxaSettingsPermissionWeb extends WebPlugin implements TxaSe
|
|
|
52
55
|
path: string;
|
|
53
56
|
recursive?: boolean;
|
|
54
57
|
}): Promise<void>;
|
|
58
|
+
readdir(_options: import('./definitions').ReaddirOptions): Promise<import('./definitions').ReaddirResult>;
|
|
55
59
|
getUri(options: GetUriOptions): Promise<GetUriResult>;
|
|
56
60
|
installApk(options: {
|
|
57
61
|
path: string;
|
package/dist/cjs/web.js
CHANGED
|
@@ -64,6 +64,10 @@ class TxaSettingsPermissionWeb extends core_1.WebPlugin {
|
|
|
64
64
|
async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }
|
|
65
65
|
async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }
|
|
66
66
|
async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }
|
|
67
|
+
async requestPermission(options) {
|
|
68
|
+
console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);
|
|
69
|
+
return { granted: true, log: webLog('REQUEST_PERMISSION') };
|
|
70
|
+
}
|
|
67
71
|
async checkRuntimePermission(options) {
|
|
68
72
|
return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };
|
|
69
73
|
}
|
|
@@ -90,6 +94,10 @@ class TxaSettingsPermissionWeb extends core_1.WebPlugin {
|
|
|
90
94
|
}
|
|
91
95
|
async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }
|
|
92
96
|
async mkdir(_options) { console.warn('mkdir is not implemented on web'); }
|
|
97
|
+
async readdir(_options) {
|
|
98
|
+
console.warn('readdir is not implemented on web');
|
|
99
|
+
return { files: [] };
|
|
100
|
+
}
|
|
93
101
|
async getUri(options) {
|
|
94
102
|
return { uri: options.path };
|
|
95
103
|
}
|
|
@@ -82,6 +82,16 @@ export interface GetUriOptions {
|
|
|
82
82
|
export interface GetUriResult {
|
|
83
83
|
uri: string;
|
|
84
84
|
}
|
|
85
|
+
export interface ReaddirOptions {
|
|
86
|
+
path: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ReaddirResult {
|
|
89
|
+
files: {
|
|
90
|
+
name: string;
|
|
91
|
+
type: 'file' | 'directory';
|
|
92
|
+
size: number;
|
|
93
|
+
}[];
|
|
94
|
+
}
|
|
85
95
|
export interface CheckRuntimePermissionOptions {
|
|
86
96
|
/** Tên đầy đủ của permission, vd: "android.permission.CAMERA" */
|
|
87
97
|
permission: string;
|
|
@@ -142,6 +152,9 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
142
152
|
openStorageSettings(): Promise<OpenSettingsResult>;
|
|
143
153
|
openDisplaySettings(): Promise<OpenSettingsResult>;
|
|
144
154
|
openSoundSettings(): Promise<OpenSettingsResult>;
|
|
155
|
+
requestPermission(options: {
|
|
156
|
+
permission: string;
|
|
157
|
+
}): Promise<PermissionResult | OpenSettingsResult>;
|
|
145
158
|
checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult>;
|
|
146
159
|
checkMultiplePermissions(options: CheckMultiplePermissionsOptions): Promise<CheckMultiplePermissionsResult>;
|
|
147
160
|
checkAllRequired(): Promise<CheckAllRequiredResult>;
|
|
@@ -153,6 +166,7 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
153
166
|
path: string;
|
|
154
167
|
recursive?: boolean;
|
|
155
168
|
}): Promise<void>;
|
|
169
|
+
readdir(options: ReaddirOptions): Promise<ReaddirResult>;
|
|
156
170
|
getUri(options: GetUriOptions): Promise<GetUriResult>;
|
|
157
171
|
installApk(options: {
|
|
158
172
|
path: string;
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -41,6 +41,9 @@ export declare class TxaSettingsPermissionWeb extends WebPlugin implements TxaSe
|
|
|
41
41
|
openStorageSettings(): Promise<OpenSettingsResult>;
|
|
42
42
|
openDisplaySettings(): Promise<OpenSettingsResult>;
|
|
43
43
|
openSoundSettings(): Promise<OpenSettingsResult>;
|
|
44
|
+
requestPermission(options: {
|
|
45
|
+
permission: string;
|
|
46
|
+
}): Promise<PermissionResult | OpenSettingsResult>;
|
|
44
47
|
checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult>;
|
|
45
48
|
checkMultiplePermissions(options: CheckMultiplePermissionsOptions): Promise<CheckMultiplePermissionsResult>;
|
|
46
49
|
checkAllRequired(): Promise<CheckAllRequiredResult>;
|
|
@@ -52,6 +55,7 @@ export declare class TxaSettingsPermissionWeb extends WebPlugin implements TxaSe
|
|
|
52
55
|
path: string;
|
|
53
56
|
recursive?: boolean;
|
|
54
57
|
}): Promise<void>;
|
|
58
|
+
readdir(_options: import('./definitions').ReaddirOptions): Promise<import('./definitions').ReaddirResult>;
|
|
55
59
|
getUri(options: GetUriOptions): Promise<GetUriResult>;
|
|
56
60
|
installApk(options: {
|
|
57
61
|
path: string;
|
package/dist/esm/web.js
CHANGED
|
@@ -61,6 +61,10 @@ export class TxaSettingsPermissionWeb extends WebPlugin {
|
|
|
61
61
|
async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }
|
|
62
62
|
async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }
|
|
63
63
|
async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }
|
|
64
|
+
async requestPermission(options) {
|
|
65
|
+
console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);
|
|
66
|
+
return { granted: true, log: webLog('REQUEST_PERMISSION') };
|
|
67
|
+
}
|
|
64
68
|
async checkRuntimePermission(options) {
|
|
65
69
|
return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };
|
|
66
70
|
}
|
|
@@ -87,6 +91,10 @@ export class TxaSettingsPermissionWeb extends WebPlugin {
|
|
|
87
91
|
}
|
|
88
92
|
async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }
|
|
89
93
|
async mkdir(_options) { console.warn('mkdir is not implemented on web'); }
|
|
94
|
+
async readdir(_options) {
|
|
95
|
+
console.warn('readdir is not implemented on web');
|
|
96
|
+
return { files: [] };
|
|
97
|
+
}
|
|
90
98
|
async getUri(options) {
|
|
91
99
|
return { uri: options.path };
|
|
92
100
|
}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -73,6 +73,10 @@ class TxaSettingsPermissionWeb extends core.WebPlugin {
|
|
|
73
73
|
async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }
|
|
74
74
|
async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }
|
|
75
75
|
async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }
|
|
76
|
+
async requestPermission(options) {
|
|
77
|
+
console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);
|
|
78
|
+
return { granted: true, log: webLog('REQUEST_PERMISSION') };
|
|
79
|
+
}
|
|
76
80
|
async checkRuntimePermission(options) {
|
|
77
81
|
return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };
|
|
78
82
|
}
|
|
@@ -99,6 +103,10 @@ class TxaSettingsPermissionWeb extends core.WebPlugin {
|
|
|
99
103
|
}
|
|
100
104
|
async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }
|
|
101
105
|
async mkdir(_options) { console.warn('mkdir is not implemented on web'); }
|
|
106
|
+
async readdir(_options) {
|
|
107
|
+
console.warn('readdir is not implemented on web');
|
|
108
|
+
return { files: [] };
|
|
109
|
+
}
|
|
102
110
|
async getUri(options) {
|
|
103
111
|
return { uri: options.path };
|
|
104
112
|
}
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["/**\n * TXA Settings Permission Plugin\n * Author: TXA (txa@nrotxa.online)\n * GitHub: https://github.com/TXAVLOG/txa-settings-permission\n */\nimport { registerPlugin } from '@capacitor/core';\nconst TxaSettingsPermission = registerPlugin('TxaSettingsPermission', {\n web: () => import('./web').then(m => new m.TxaSettingsPermissionWeb()),\n});\nexport * from './definitions';\nexport { TxaSettingsPermission };\n","/**\n * TXA Settings Permission Plugin - Web Fallback\n * Web không có Android Settings, tất cả mock trả về granted/opened=true\n */\nimport { WebPlugin } from '@capacitor/core';\nfunction webLog(action) {\n return {\n level: 'info',\n message: `[Web] ${action}: không áp dụng trên web, trả về mock`,\n action,\n success: true,\n androidVersion: 0,\n androidRelease: 'web',\n timestamp: Date.now(),\n };\n}\nfunction mockOpen(screen) {\n console.warn(`[TxaSettingsPermission] Web: ${screen} không áp dụng trên web`);\n return { opened: true, granted: true, screen, log: webLog(screen) };\n}\nfunction mockGranted(action) {\n return { granted: true, log: webLog(action) };\n}\nexport class TxaSettingsPermissionWeb extends WebPlugin {\n async getDeviceInfo() {\n return {\n androidSdk: 0, androidRelease: 'web', manufacturer: 'web',\n model: 'browser', brand: 'web', device: 'web', packageName: 'web',\n supportsManageAllFiles: false, supportsNotificationPolicy: false,\n supportsOverlay: false, supportsBatteryOptimization: false,\n supportsMediaPermissions: false, supportsInstallUnknownApps: false,\n supportsUsageStats: false, supportsAccessibility: false, supportsDeviceAdmin: false,\n };\n }\n async openSettings() { return mockOpen('APP_SETTINGS'); }\n async openManageAllFiles() { return mockOpen('MANAGE_ALL_FILES'); }\n async checkManageAllFiles() { return mockGranted('CHECK_MANAGE_ALL_FILES'); }\n async openOverlaySettings() { return mockOpen('OVERLAY_SETTINGS'); }\n async checkOverlay() { return mockGranted('CHECK_OVERLAY'); }\n async openInstallUnknownApps() { return mockOpen('INSTALL_UNKNOWN_APPS'); }\n async checkInstallUnknownApps() { return mockGranted('CHECK_INSTALL_UNKNOWN'); }\n async setBrightness(options) { console.log('Web mock setBrightness:', options.value); }\n async getBrightness() { return { value: 1 }; }\n async setVolume(options) { console.log('Web mock setVolume:', options.value); }\n async getVolume() { return { value: 1 }; }\n async openBatteryOptimization() { return mockOpen('BATTERY_OPTIMIZATION'); }\n async checkBatteryOptimization() {\n return { ignoring: true, granted: true, log: webLog('CHECK_BATTERY') };\n }\n async openNotificationSettings() { return mockOpen('NOTIFICATION_SETTINGS'); }\n async openNotificationPolicyAccess() { return mockOpen('NOTIFICATION_POLICY'); }\n async openAccessibilitySettings() { return mockOpen('ACCESSIBILITY_SETTINGS'); }\n async openUsageStatsSettings() { return mockOpen('USAGE_STATS_SETTINGS'); }\n async openDeviceAdminSettings() { return mockOpen('DEVICE_ADMIN_SETTINGS'); }\n async openWifiSettings() { return mockOpen('WIFI_SETTINGS'); }\n async openLocationSettings() { return mockOpen('LOCATION_SETTINGS'); }\n async openBluetoothSettings() { return mockOpen('BLUETOOTH_SETTINGS'); }\n async openNfcSettings() { return mockOpen('NFC_SETTINGS'); }\n async openDateTimeSettings() { return mockOpen('DATE_SETTINGS'); }\n async openLanguageSettings() { return mockOpen('LOCALE_SETTINGS'); }\n async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }\n async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }\n async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }\n async checkRuntimePermission(options) {\n return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };\n }\n async checkMultiplePermissions(options) {\n const results = {};\n options.permissions.forEach(p => { results[p] = true; });\n return { results, allGranted: true, missing: [], log: webLog('CHECK_MULTIPLE_PERMISSIONS') };\n }\n async checkAllRequired() {\n return {\n checks: {\n manageAllFiles: true, overlay: true, installUnknownApps: true,\n batteryOptimization: true, camera: true, microphone: true, location: true,\n },\n androidSdk: 0,\n androidRelease: 'web',\n };\n }\n async writeFile(_options) { console.warn('writeFile is not implemented on web'); }\n async appendFile(_options) { console.warn('appendFile is not implemented on web'); }\n async readFile(_options) {\n console.warn('readFile is not implemented on web');\n return { data: '' };\n }\n async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }\n async mkdir(_options) { console.warn('mkdir is not implemented on web'); }\n async getUri(options) {\n return { uri: options.path };\n }\n async installApk(options) {\n console.warn('[TxaSettingsPermission] Web: installApk không áp dụng trên web, mock trả về success');\n return { success: true, log: webLog('INSTALL_APK') };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["/**\n * TXA Settings Permission Plugin\n * Author: TXA (txa@nrotxa.online)\n * GitHub: https://github.com/TXAVLOG/txa-settings-permission\n */\nimport { registerPlugin } from '@capacitor/core';\nconst TxaSettingsPermission = registerPlugin('TxaSettingsPermission', {\n web: () => import('./web').then(m => new m.TxaSettingsPermissionWeb()),\n});\nexport * from './definitions';\nexport { TxaSettingsPermission };\n","/**\n * TXA Settings Permission Plugin - Web Fallback\n * Web không có Android Settings, tất cả mock trả về granted/opened=true\n */\nimport { WebPlugin } from '@capacitor/core';\nfunction webLog(action) {\n return {\n level: 'info',\n message: `[Web] ${action}: không áp dụng trên web, trả về mock`,\n action,\n success: true,\n androidVersion: 0,\n androidRelease: 'web',\n timestamp: Date.now(),\n };\n}\nfunction mockOpen(screen) {\n console.warn(`[TxaSettingsPermission] Web: ${screen} không áp dụng trên web`);\n return { opened: true, granted: true, screen, log: webLog(screen) };\n}\nfunction mockGranted(action) {\n return { granted: true, log: webLog(action) };\n}\nexport class TxaSettingsPermissionWeb extends WebPlugin {\n async getDeviceInfo() {\n return {\n androidSdk: 0, androidRelease: 'web', manufacturer: 'web',\n model: 'browser', brand: 'web', device: 'web', packageName: 'web',\n supportsManageAllFiles: false, supportsNotificationPolicy: false,\n supportsOverlay: false, supportsBatteryOptimization: false,\n supportsMediaPermissions: false, supportsInstallUnknownApps: false,\n supportsUsageStats: false, supportsAccessibility: false, supportsDeviceAdmin: false,\n };\n }\n async openSettings() { return mockOpen('APP_SETTINGS'); }\n async openManageAllFiles() { return mockOpen('MANAGE_ALL_FILES'); }\n async checkManageAllFiles() { return mockGranted('CHECK_MANAGE_ALL_FILES'); }\n async openOverlaySettings() { return mockOpen('OVERLAY_SETTINGS'); }\n async checkOverlay() { return mockGranted('CHECK_OVERLAY'); }\n async openInstallUnknownApps() { return mockOpen('INSTALL_UNKNOWN_APPS'); }\n async checkInstallUnknownApps() { return mockGranted('CHECK_INSTALL_UNKNOWN'); }\n async setBrightness(options) { console.log('Web mock setBrightness:', options.value); }\n async getBrightness() { return { value: 1 }; }\n async setVolume(options) { console.log('Web mock setVolume:', options.value); }\n async getVolume() { return { value: 1 }; }\n async openBatteryOptimization() { return mockOpen('BATTERY_OPTIMIZATION'); }\n async checkBatteryOptimization() {\n return { ignoring: true, granted: true, log: webLog('CHECK_BATTERY') };\n }\n async openNotificationSettings() { return mockOpen('NOTIFICATION_SETTINGS'); }\n async openNotificationPolicyAccess() { return mockOpen('NOTIFICATION_POLICY'); }\n async openAccessibilitySettings() { return mockOpen('ACCESSIBILITY_SETTINGS'); }\n async openUsageStatsSettings() { return mockOpen('USAGE_STATS_SETTINGS'); }\n async openDeviceAdminSettings() { return mockOpen('DEVICE_ADMIN_SETTINGS'); }\n async openWifiSettings() { return mockOpen('WIFI_SETTINGS'); }\n async openLocationSettings() { return mockOpen('LOCATION_SETTINGS'); }\n async openBluetoothSettings() { return mockOpen('BLUETOOTH_SETTINGS'); }\n async openNfcSettings() { return mockOpen('NFC_SETTINGS'); }\n async openDateTimeSettings() { return mockOpen('DATE_SETTINGS'); }\n async openLanguageSettings() { return mockOpen('LOCALE_SETTINGS'); }\n async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }\n async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }\n async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }\n async requestPermission(options) {\n console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);\n return { granted: true, log: webLog('REQUEST_PERMISSION') };\n }\n async checkRuntimePermission(options) {\n return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };\n }\n async checkMultiplePermissions(options) {\n const results = {};\n options.permissions.forEach(p => { results[p] = true; });\n return { results, allGranted: true, missing: [], log: webLog('CHECK_MULTIPLE_PERMISSIONS') };\n }\n async checkAllRequired() {\n return {\n checks: {\n manageAllFiles: true, overlay: true, installUnknownApps: true,\n batteryOptimization: true, camera: true, microphone: true, location: true,\n },\n androidSdk: 0,\n androidRelease: 'web',\n };\n }\n async writeFile(_options) { console.warn('writeFile is not implemented on web'); }\n async appendFile(_options) { console.warn('appendFile is not implemented on web'); }\n async readFile(_options) {\n console.warn('readFile is not implemented on web');\n return { data: '' };\n }\n async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }\n async mkdir(_options) { console.warn('mkdir is not implemented on web'); }\n async readdir(_options) {\n console.warn('readdir is not implemented on web');\n return { files: [] };\n }\n async getUri(options) {\n return { uri: options.path };\n }\n async installApk(options) {\n console.warn('[TxaSettingsPermission] Web: installApk không áp dụng trên web, mock trả về success');\n return { success: true, log: webLog('INSTALL_APK') };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -72,6 +72,10 @@ var txaSettingsPermission = (function (exports, core) {
|
|
|
72
72
|
async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }
|
|
73
73
|
async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }
|
|
74
74
|
async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }
|
|
75
|
+
async requestPermission(options) {
|
|
76
|
+
console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);
|
|
77
|
+
return { granted: true, log: webLog('REQUEST_PERMISSION') };
|
|
78
|
+
}
|
|
75
79
|
async checkRuntimePermission(options) {
|
|
76
80
|
return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };
|
|
77
81
|
}
|
|
@@ -98,6 +102,10 @@ var txaSettingsPermission = (function (exports, core) {
|
|
|
98
102
|
}
|
|
99
103
|
async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }
|
|
100
104
|
async mkdir(_options) { console.warn('mkdir is not implemented on web'); }
|
|
105
|
+
async readdir(_options) {
|
|
106
|
+
console.warn('readdir is not implemented on web');
|
|
107
|
+
return { files: [] };
|
|
108
|
+
}
|
|
101
109
|
async getUri(options) {
|
|
102
110
|
return { uri: options.path };
|
|
103
111
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["/**\n * TXA Settings Permission Plugin\n * Author: TXA (txa@nrotxa.online)\n * GitHub: https://github.com/TXAVLOG/txa-settings-permission\n */\nimport { registerPlugin } from '@capacitor/core';\nconst TxaSettingsPermission = registerPlugin('TxaSettingsPermission', {\n web: () => import('./web').then(m => new m.TxaSettingsPermissionWeb()),\n});\nexport * from './definitions';\nexport { TxaSettingsPermission };\n","/**\n * TXA Settings Permission Plugin - Web Fallback\n * Web không có Android Settings, tất cả mock trả về granted/opened=true\n */\nimport { WebPlugin } from '@capacitor/core';\nfunction webLog(action) {\n return {\n level: 'info',\n message: `[Web] ${action}: không áp dụng trên web, trả về mock`,\n action,\n success: true,\n androidVersion: 0,\n androidRelease: 'web',\n timestamp: Date.now(),\n };\n}\nfunction mockOpen(screen) {\n console.warn(`[TxaSettingsPermission] Web: ${screen} không áp dụng trên web`);\n return { opened: true, granted: true, screen, log: webLog(screen) };\n}\nfunction mockGranted(action) {\n return { granted: true, log: webLog(action) };\n}\nexport class TxaSettingsPermissionWeb extends WebPlugin {\n async getDeviceInfo() {\n return {\n androidSdk: 0, androidRelease: 'web', manufacturer: 'web',\n model: 'browser', brand: 'web', device: 'web', packageName: 'web',\n supportsManageAllFiles: false, supportsNotificationPolicy: false,\n supportsOverlay: false, supportsBatteryOptimization: false,\n supportsMediaPermissions: false, supportsInstallUnknownApps: false,\n supportsUsageStats: false, supportsAccessibility: false, supportsDeviceAdmin: false,\n };\n }\n async openSettings() { return mockOpen('APP_SETTINGS'); }\n async openManageAllFiles() { return mockOpen('MANAGE_ALL_FILES'); }\n async checkManageAllFiles() { return mockGranted('CHECK_MANAGE_ALL_FILES'); }\n async openOverlaySettings() { return mockOpen('OVERLAY_SETTINGS'); }\n async checkOverlay() { return mockGranted('CHECK_OVERLAY'); }\n async openInstallUnknownApps() { return mockOpen('INSTALL_UNKNOWN_APPS'); }\n async checkInstallUnknownApps() { return mockGranted('CHECK_INSTALL_UNKNOWN'); }\n async setBrightness(options) { console.log('Web mock setBrightness:', options.value); }\n async getBrightness() { return { value: 1 }; }\n async setVolume(options) { console.log('Web mock setVolume:', options.value); }\n async getVolume() { return { value: 1 }; }\n async openBatteryOptimization() { return mockOpen('BATTERY_OPTIMIZATION'); }\n async checkBatteryOptimization() {\n return { ignoring: true, granted: true, log: webLog('CHECK_BATTERY') };\n }\n async openNotificationSettings() { return mockOpen('NOTIFICATION_SETTINGS'); }\n async openNotificationPolicyAccess() { return mockOpen('NOTIFICATION_POLICY'); }\n async openAccessibilitySettings() { return mockOpen('ACCESSIBILITY_SETTINGS'); }\n async openUsageStatsSettings() { return mockOpen('USAGE_STATS_SETTINGS'); }\n async openDeviceAdminSettings() { return mockOpen('DEVICE_ADMIN_SETTINGS'); }\n async openWifiSettings() { return mockOpen('WIFI_SETTINGS'); }\n async openLocationSettings() { return mockOpen('LOCATION_SETTINGS'); }\n async openBluetoothSettings() { return mockOpen('BLUETOOTH_SETTINGS'); }\n async openNfcSettings() { return mockOpen('NFC_SETTINGS'); }\n async openDateTimeSettings() { return mockOpen('DATE_SETTINGS'); }\n async openLanguageSettings() { return mockOpen('LOCALE_SETTINGS'); }\n async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }\n async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }\n async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }\n async checkRuntimePermission(options) {\n return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };\n }\n async checkMultiplePermissions(options) {\n const results = {};\n options.permissions.forEach(p => { results[p] = true; });\n return { results, allGranted: true, missing: [], log: webLog('CHECK_MULTIPLE_PERMISSIONS') };\n }\n async checkAllRequired() {\n return {\n checks: {\n manageAllFiles: true, overlay: true, installUnknownApps: true,\n batteryOptimization: true, camera: true, microphone: true, location: true,\n },\n androidSdk: 0,\n androidRelease: 'web',\n };\n }\n async writeFile(_options) { console.warn('writeFile is not implemented on web'); }\n async appendFile(_options) { console.warn('appendFile is not implemented on web'); }\n async readFile(_options) {\n console.warn('readFile is not implemented on web');\n return { data: '' };\n }\n async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }\n async mkdir(_options) { console.warn('mkdir is not implemented on web'); }\n async getUri(options) {\n return { uri: options.path };\n }\n async installApk(options) {\n console.warn('[TxaSettingsPermission] Web: installApk không áp dụng trên web, mock trả về success');\n return { success: true, log: webLog('INSTALL_APK') };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["/**\n * TXA Settings Permission Plugin\n * Author: TXA (txa@nrotxa.online)\n * GitHub: https://github.com/TXAVLOG/txa-settings-permission\n */\nimport { registerPlugin } from '@capacitor/core';\nconst TxaSettingsPermission = registerPlugin('TxaSettingsPermission', {\n web: () => import('./web').then(m => new m.TxaSettingsPermissionWeb()),\n});\nexport * from './definitions';\nexport { TxaSettingsPermission };\n","/**\n * TXA Settings Permission Plugin - Web Fallback\n * Web không có Android Settings, tất cả mock trả về granted/opened=true\n */\nimport { WebPlugin } from '@capacitor/core';\nfunction webLog(action) {\n return {\n level: 'info',\n message: `[Web] ${action}: không áp dụng trên web, trả về mock`,\n action,\n success: true,\n androidVersion: 0,\n androidRelease: 'web',\n timestamp: Date.now(),\n };\n}\nfunction mockOpen(screen) {\n console.warn(`[TxaSettingsPermission] Web: ${screen} không áp dụng trên web`);\n return { opened: true, granted: true, screen, log: webLog(screen) };\n}\nfunction mockGranted(action) {\n return { granted: true, log: webLog(action) };\n}\nexport class TxaSettingsPermissionWeb extends WebPlugin {\n async getDeviceInfo() {\n return {\n androidSdk: 0, androidRelease: 'web', manufacturer: 'web',\n model: 'browser', brand: 'web', device: 'web', packageName: 'web',\n supportsManageAllFiles: false, supportsNotificationPolicy: false,\n supportsOverlay: false, supportsBatteryOptimization: false,\n supportsMediaPermissions: false, supportsInstallUnknownApps: false,\n supportsUsageStats: false, supportsAccessibility: false, supportsDeviceAdmin: false,\n };\n }\n async openSettings() { return mockOpen('APP_SETTINGS'); }\n async openManageAllFiles() { return mockOpen('MANAGE_ALL_FILES'); }\n async checkManageAllFiles() { return mockGranted('CHECK_MANAGE_ALL_FILES'); }\n async openOverlaySettings() { return mockOpen('OVERLAY_SETTINGS'); }\n async checkOverlay() { return mockGranted('CHECK_OVERLAY'); }\n async openInstallUnknownApps() { return mockOpen('INSTALL_UNKNOWN_APPS'); }\n async checkInstallUnknownApps() { return mockGranted('CHECK_INSTALL_UNKNOWN'); }\n async setBrightness(options) { console.log('Web mock setBrightness:', options.value); }\n async getBrightness() { return { value: 1 }; }\n async setVolume(options) { console.log('Web mock setVolume:', options.value); }\n async getVolume() { return { value: 1 }; }\n async openBatteryOptimization() { return mockOpen('BATTERY_OPTIMIZATION'); }\n async checkBatteryOptimization() {\n return { ignoring: true, granted: true, log: webLog('CHECK_BATTERY') };\n }\n async openNotificationSettings() { return mockOpen('NOTIFICATION_SETTINGS'); }\n async openNotificationPolicyAccess() { return mockOpen('NOTIFICATION_POLICY'); }\n async openAccessibilitySettings() { return mockOpen('ACCESSIBILITY_SETTINGS'); }\n async openUsageStatsSettings() { return mockOpen('USAGE_STATS_SETTINGS'); }\n async openDeviceAdminSettings() { return mockOpen('DEVICE_ADMIN_SETTINGS'); }\n async openWifiSettings() { return mockOpen('WIFI_SETTINGS'); }\n async openLocationSettings() { return mockOpen('LOCATION_SETTINGS'); }\n async openBluetoothSettings() { return mockOpen('BLUETOOTH_SETTINGS'); }\n async openNfcSettings() { return mockOpen('NFC_SETTINGS'); }\n async openDateTimeSettings() { return mockOpen('DATE_SETTINGS'); }\n async openLanguageSettings() { return mockOpen('LOCALE_SETTINGS'); }\n async openStorageSettings() { return mockOpen('STORAGE_SETTINGS'); }\n async openDisplaySettings() { return mockOpen('DISPLAY_SETTINGS'); }\n async openSoundSettings() { return mockOpen('SOUND_SETTINGS'); }\n async requestPermission(options) {\n console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);\n return { granted: true, log: webLog('REQUEST_PERMISSION') };\n }\n async checkRuntimePermission(options) {\n return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };\n }\n async checkMultiplePermissions(options) {\n const results = {};\n options.permissions.forEach(p => { results[p] = true; });\n return { results, allGranted: true, missing: [], log: webLog('CHECK_MULTIPLE_PERMISSIONS') };\n }\n async checkAllRequired() {\n return {\n checks: {\n manageAllFiles: true, overlay: true, installUnknownApps: true,\n batteryOptimization: true, camera: true, microphone: true, location: true,\n },\n androidSdk: 0,\n androidRelease: 'web',\n };\n }\n async writeFile(_options) { console.warn('writeFile is not implemented on web'); }\n async appendFile(_options) { console.warn('appendFile is not implemented on web'); }\n async readFile(_options) {\n console.warn('readFile is not implemented on web');\n return { data: '' };\n }\n async deleteFile(_options) { console.warn('deleteFile is not implemented on web'); }\n async mkdir(_options) { console.warn('mkdir is not implemented on web'); }\n async readdir(_options) {\n console.warn('readdir is not implemented on web');\n return { files: [] };\n }\n async getUri(options) {\n return { uri: options.path };\n }\n async installApk(options) {\n console.warn('[TxaSettingsPermission] Web: installApk không áp dụng trên web, mock trả về success');\n return { success: true, log: webLog('INSTALL_APK') };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "txa-settings-permission",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Capacitor plugin by TXA — Mở tất cả màn hình Settings cấp quyền trên Android, tự tương thích theo Android version",
|
|
6
6
|
"main": "dist/plugin.cjs.js",
|
package/src/definitions.ts
CHANGED
|
@@ -95,6 +95,18 @@ export interface GetUriResult {
|
|
|
95
95
|
uri: string;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
export interface ReaddirOptions {
|
|
99
|
+
path: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface ReaddirResult {
|
|
103
|
+
files: {
|
|
104
|
+
name: string;
|
|
105
|
+
type: 'file' | 'directory';
|
|
106
|
+
size: number;
|
|
107
|
+
}[];
|
|
108
|
+
}
|
|
109
|
+
|
|
98
110
|
export interface CheckRuntimePermissionOptions {
|
|
99
111
|
/** Tên đầy đủ của permission, vd: "android.permission.CAMERA" */
|
|
100
112
|
permission: string;
|
|
@@ -177,6 +189,7 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
177
189
|
openSoundSettings(): Promise<OpenSettingsResult>;
|
|
178
190
|
|
|
179
191
|
// Runtime Permission checks
|
|
192
|
+
requestPermission(options: { permission: string }): Promise<PermissionResult | OpenSettingsResult>;
|
|
180
193
|
checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult>;
|
|
181
194
|
checkMultiplePermissions(options: CheckMultiplePermissionsOptions): Promise<CheckMultiplePermissionsResult>;
|
|
182
195
|
|
|
@@ -189,6 +202,7 @@ export interface TxaSettingsPermissionPlugin {
|
|
|
189
202
|
readFile(options: ReadFileOptions): Promise<ReadFileResult>;
|
|
190
203
|
deleteFile(options: DeleteFileOptions): Promise<void>;
|
|
191
204
|
mkdir(options: { path: string, recursive?: boolean }): Promise<void>;
|
|
205
|
+
readdir(options: ReaddirOptions): Promise<ReaddirResult>;
|
|
192
206
|
getUri(options: GetUriOptions): Promise<GetUriResult>;
|
|
193
207
|
|
|
194
208
|
// APK Installation
|
package/src/web.ts
CHANGED
|
@@ -91,6 +91,11 @@ export class TxaSettingsPermissionWeb
|
|
|
91
91
|
async openDisplaySettings(): Promise<OpenSettingsResult> { return mockOpen('DISPLAY_SETTINGS'); }
|
|
92
92
|
async openSoundSettings(): Promise<OpenSettingsResult> { return mockOpen('SOUND_SETTINGS'); }
|
|
93
93
|
|
|
94
|
+
async requestPermission(options: { permission: string }): Promise<PermissionResult | OpenSettingsResult> {
|
|
95
|
+
console.warn(`[TxaSettingsPermission] Web: requestPermission(${options.permission}) không áp dụng trên web`);
|
|
96
|
+
return { granted: true, log: webLog('REQUEST_PERMISSION') };
|
|
97
|
+
}
|
|
98
|
+
|
|
94
99
|
async checkRuntimePermission(options: CheckRuntimePermissionOptions): Promise<CheckRuntimePermissionResult> {
|
|
95
100
|
return { permission: options.permission, granted: true, log: webLog('CHECK_RUNTIME_PERMISSION') };
|
|
96
101
|
}
|
|
@@ -120,6 +125,10 @@ export class TxaSettingsPermissionWeb
|
|
|
120
125
|
}
|
|
121
126
|
async deleteFile(_options: DeleteFileOptions): Promise<void> { console.warn('deleteFile is not implemented on web'); }
|
|
122
127
|
async mkdir(_options: { path: string, recursive?: boolean }): Promise<void> { console.warn('mkdir is not implemented on web'); }
|
|
128
|
+
async readdir(_options: import('./definitions').ReaddirOptions): Promise<import('./definitions').ReaddirResult> {
|
|
129
|
+
console.warn('readdir is not implemented on web');
|
|
130
|
+
return { files: [] };
|
|
131
|
+
}
|
|
123
132
|
async getUri(options: GetUriOptions): Promise<GetUriResult> {
|
|
124
133
|
return { uri: options.path };
|
|
125
134
|
}
|