109528755S猫头猫import React, {useEffect, useRef, useState} from 'react'; 209528755S猫头猫import {AppState, StyleSheet} from 'react-native'; 309528755S猫头猫import rpx from '@/utils/rpx'; 409528755S猫头猫import AppBar from '@/components/base/appBar'; 509528755S猫头猫import VerticalSafeAreaView from '@/components/base/verticalSafeAreaView'; 609528755S猫头猫import globalStyle from '@/constants/globalStyle'; 709528755S猫头猫import StatusBar from '@/components/base/statusBar'; 809528755S猫头猫import ThemeText from '@/components/base/themeText'; 909528755S猫头猫import ListItem from '@/components/base/listItem'; 1009528755S猫头猫import ThemeSwitch from '@/components/base/switch'; 1109528755S猫头猫import LyricUtil from '@/native/lyricUtil'; 1209528755S猫头猫import NativeUtils from '@/native/utils'; 1309528755S猫头猫 1409528755S猫头猫type IPermissionTypes = 'floatingWindow' | 'fileStorage'; 1509528755S猫头猫 1609528755S猫头猫export default function Permissions() { 1709528755S猫头猫 const appState = useRef(AppState.currentState); 1809528755S猫头猫 const [permissions, setPermissions] = useState< 1909528755S猫头猫 Record<IPermissionTypes, boolean> 2009528755S猫头猫 >({ 2109528755S猫头猫 floatingWindow: false, 2209528755S猫头猫 fileStorage: false, 2309528755S猫头猫 // background: false, 2409528755S猫头猫 }); 2509528755S猫头猫 2609528755S猫头猫 async function checkPermission(type?: IPermissionTypes) { 2709528755S猫头猫 let newPermission = { 2809528755S猫头猫 ...permissions, 2909528755S猫头猫 }; 3009528755S猫头猫 if (!type || type === 'floatingWindow') { 3109528755S猫头猫 const hasPermission = await LyricUtil.checkSystemAlertPermission(); 3209528755S猫头猫 newPermission.floatingWindow = hasPermission; 3309528755S猫头猫 } 3409528755S猫头猫 if (!type || type === 'fileStorage') { 3509528755S猫头猫 const hasPermission = await NativeUtils.checkStoragePermission(); 3609528755S猫头猫 console.log('HAS', hasPermission); 3709528755S猫头猫 newPermission.fileStorage = hasPermission; 3809528755S猫头猫 } 3909528755S猫头猫 // if (!type || type === 'background') { 4009528755S猫头猫 4109528755S猫头猫 // } 4209528755S猫头猫 4309528755S猫头猫 setPermissions(newPermission); 4409528755S猫头猫 } 4509528755S猫头猫 4609528755S猫头猫 useEffect(() => { 4709528755S猫头猫 checkPermission(); 4809528755S猫头猫 const subscription = AppState.addEventListener( 4909528755S猫头猫 'change', 5009528755S猫头猫 nextAppState => { 5109528755S猫头猫 if ( 5209528755S猫头猫 appState.current.match(/inactive|background/) && 5309528755S猫头猫 nextAppState === 'active' 5409528755S猫头猫 ) { 5509528755S猫头猫 checkPermission(); 5609528755S猫头猫 } 5709528755S猫头猫 5809528755S猫头猫 appState.current = nextAppState; 5909528755S猫头猫 }, 6009528755S猫头猫 ); 6109528755S猫头猫 6209528755S猫头猫 return () => { 6309528755S猫头猫 subscription.remove(); 6409528755S猫头猫 }; 6509528755S猫头猫 }, []); 6609528755S猫头猫 6709528755S猫头猫 return ( 6809528755S猫头猫 <VerticalSafeAreaView style={globalStyle.fwflex1}> 6909528755S猫头猫 <StatusBar /> 7009528755S猫头猫 <AppBar>权限管理</AppBar> 7109528755S猫头猫 <ThemeText style={styles.description}> 7209528755S猫头猫 此处列出了本 APP 7309528755S猫头猫 需要的所有权限,你可以从这里开启或关闭某些权限。 7409528755S猫头猫 </ThemeText> 7509528755S猫头猫 <ListItem 765589cdf3S猫头猫 withHorizontalPadding 7709528755S猫头猫 heightType="big" 7809528755S猫头猫 onPress={() => { 7909528755S猫头猫 LyricUtil.requestSystemAlertPermission(); 8009528755S猫头猫 }}> 8109528755S猫头猫 <ListItem.Content 8209528755S猫头猫 title="悬浮窗权限" 8309528755S猫头猫 description="用以展示桌面歌词" 8409528755S猫头猫 /> 8509528755S猫头猫 <ThemeSwitch value={permissions.floatingWindow} /> 8609528755S猫头猫 </ListItem> 8709528755S猫头猫 <ListItem 885589cdf3S猫头猫 withHorizontalPadding 8909528755S猫头猫 heightType="big" 9009528755S猫头猫 onPress={() => { 9109528755S猫头猫 NativeUtils.requestStoragePermission(); 9209528755S猫头猫 }}> 9309528755S猫头猫 <ListItem.Content 9409528755S猫头猫 title="文件读写权限" 9509528755S猫头猫 description="用以下载歌曲、缓存数据" 9609528755S猫头猫 /> 9709528755S猫头猫 <ThemeSwitch value={permissions.fileStorage} /> 9809528755S猫头猫 </ListItem> 99*ab5f994aSmaotoumao {/* <ListItem withHorizontalPadding heightType="big"> 10009528755S猫头猫 <ListItem.Content 10109528755S猫头猫 title="后台运行" 10209528755S猫头猫 description="用以在后台播放音乐"></ListItem.Content> 10309528755S猫头猫 <ThemeSwitch value={permissions.background}></ThemeSwitch> 10409528755S猫头猫 </ListItem> */} 10509528755S猫头猫 </VerticalSafeAreaView> 10609528755S猫头猫 ); 10709528755S猫头猫} 10809528755S猫头猫 10909528755S猫头猫const styles = StyleSheet.create({ 11009528755S猫头猫 description: { 11109528755S猫头猫 width: '100%', 11209528755S猫头猫 paddingHorizontal: rpx(24), 11309528755S猫头猫 marginVertical: rpx(36), 11409528755S猫头猫 }, 11509528755S猫头猫}); 116