import { Injectable } from '@angular/core'; import { Platform } from 'ionic-angular'; import { OpenNativeSettings } from '@ionic-native/open-native-settings'; import { BaseLog as Log } from 'base-log'; const log = new Log('Settings'); // ios const iosNames = [ "about", "autolock", "castle", "cellular_usage", "configuration_list", "facetime", "locations", "music", "music_equalizer", "music_volume", "nike_ipod", "notes", "notification_id", "passbook", "phone", "photos", "reset", "ringtone", "browser", "tethering", "twitter", "touch", "video", "vpn", "wallpaper", "software_update", ]; const androidNames = [ "apn", "application", "battery_optimization", "captioning", "cast", "data_roaming", "dream", "home", "manage_all_applications", "manage_applications", "memory_card", "nfcsharing", "nfc_payment", "nfc_settings", "print", "privacy", "quick_launch", "security", "sync", "user_dictionary", "voice_input", "wifi_ip", "wireless", "application_development", "keyboard_subtype", ]; // 设置跳转名称 const commonNames = [ "accessibility", "account", "airplane_mode", "application_details", "bluetooth", "date", "display", "keyboard", "locale", "location", "network", "search", "settings", "show_regulatory_info", "sound", "storage", "store", "usage", "wifi" ] // == 原生系统设置跳转服务 @Injectable() export class Settings { constructor( public platform:Platform, public openNativeSettings:OpenNativeSettings ){ } // 打开系统设置指定页面 open = (name) => { if(this.platform.is('cordova')){ const names = this.getNames() || []; if(names.indexOf(name) > -1){ return this.openNativeSettings.open(name); }else{ log.info(`名为${name}的系统设置不存在!`,null,true); return Promise.reject(null); } } } // == 获取对应设备的设置名称 getNames = () => { if(this.platform.is('ios')){ return commonNames.concat(iosNames); }else if(this.platform.is('android')){ return commonNames.concat(androidNames); }else{ return commonNames || []; } } }