This commit is contained in:
2026-08-26 17:23:42 +08:00
parent 48d3c32293
commit 5ad9757dd5
5 changed files with 51 additions and 12 deletions
+27 -8
View File
@@ -34,25 +34,44 @@ export function startScanBroadcast({ onScan, onError } = {}) {
const filter = new IntentFilter()
filter.addAction(SCAN_BROADCAST_ACTION)
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive(context, intent) {
try {
plus.android.importClass(intent)
const value = normalizeScanValue(intent.getStringExtra(SCAN_BROADCAST_EXTRA))
if (!value || isDuplicateScan(value)) return
onScan(value)
} catch (error) {
if (typeof onError === 'function') onError(error)
onReceive(context, intent) {
try {
plus.android.importClass(intent)
const rawValue = intent.getStringExtra(SCAN_BROADCAST_EXTRA)
const value = normalizeScanValue(rawValue)
console.info('[Overseas PDA broadcast] received', { action: intent.getAction(), extra: SCAN_BROADCAST_EXTRA, rawValue, value })
if (!value) { console.warn('[Overseas PDA broadcast] ignored empty value'); return }
if (isDuplicateScan(value)) { console.info('[Overseas PDA broadcast] ignored duplicate', { value }); return }
onScan(value)
} catch (error) {
console.error('[Overseas PDA broadcast] receive failed', { message: error.message })
if (typeof onError === 'function') onError(error)
}
}
})
const Build = plus.android.importClass('android.os.Build')
const sdkInt = Number(Build.VERSION.SDK_INT)
if (Build.VERSION.SDK_INT >= 33) {
const Context = plus.android.importClass('android.content.Context')
activity.registerReceiver(receiver, filter, Context.RECEIVER_EXPORTED)
} else {
activity.registerReceiver(receiver, filter)
}
let packageName = ''
try { packageName = String(activity.getPackageName()) } catch (_) {}
console.info('[Overseas PDA broadcast] receiver registered', {
action: SCAN_BROADCAST_ACTION,
extra: SCAN_BROADCAST_EXTRA,
packageName,
sdkInt,
exported: sdkInt >= 33
})
} catch (error) {
console.error('[Overseas PDA broadcast] registration failed', {
action: SCAN_BROADCAST_ACTION,
extra: SCAN_BROADCAST_EXTRA,
message: error?.message || String(error)
})
receiver = null
activity = null
if (typeof onError === 'function') onError(error)