pub struct ContextWrapper { /* private fields */ }
Expand description
Context 的代理实现,它只是将其所有调用委托给另一个 Context。可以创建子类来修改行为,而无需更改原始 Context。
Implementations§
Source§impl ContextWrapper
impl ContextWrapper
Sourcepub fn get_class_loader(&self) -> ClassLoader
pub fn get_class_loader(&self) -> ClassLoader
返回可用于查询此包中的类的类加载器。
Sourcepub fn send_broadcast(&self, intent: &Intent)
pub fn send_broadcast(&self, intent: &Intent)
将给定的意图广播给所有感兴趣的 BroadcastReceiver。此调用是异步的;它会立即返回,您将在接收器运行时继续执行。接收器不会传播任何结果,接收器也无法中止广播。如果您想允许接收器传播结果或中止广播,则必须使用 sendOrderedBroadcast(Intent, String) 发送有序广播。有关 Intent 广播的更多信息,请参阅 BroadcastReceiver。
intent
要广播的 Intent;与此 Intent 匹配的所有接收器都将收到广播。
Methods from Deref<Target = Context>§
pub const MODE_PRIVATE: i32 = 0i32
pub const MODE_WORLD_READABLE: i32 = 1i32
pub const MODE_WORLD_WRITEABLE: i32 = 2i32
pub const MODE_APPEND: i32 = 32_768i32
pub const MODE_MULTI_PROCESS: i32 = 4i32
pub const MODE_ENABLE_WRITE_AHEAD_LOGGING: i32 = 8i32
pub const MODE_NO_LOCALIZED_COLLATORS: i32 = 16i32
pub const POWER_SERVICE: &'static str = "power"
pub const POWER_STATS_SERVICE: &'static str = "powerstats"
pub const RECOVERY_SERVICE: &'static str = "recovery"
pub const SYSTEM_UPDATE_SERVICE: &'static str = "system_update"
pub const WINDOW_SERVICE: &'static str = "window"
pub const LAYOUT_INFLATER_SERVICE: &'static str = "layout_inflater"
pub const ACCOUNT_SERVICE: &'static str = "account"
pub const ACTIVITY_SERVICE: &'static str = "activity"
pub const ACTIVITY_TASK_SERVICE: &'static str = "activity_task"
pub const URI_GRANTS_SERVICE: &'static str = "uri_grants"
pub const ALARM_SERVICE: &'static str = "alarm"
pub const NOTIFICATION_SERVICE: &'static str = "notification"
pub const ACCESSIBILITY_SERVICE: &'static str = "accessibility"
pub const CAPTIONING_SERVICE: &'static str = "captioning"
pub const KEYGUARD_SERVICE: &'static str = "keyguard"
pub const LOCATION_SERVICE: &'static str = "location"
pub const COUNTRY_DETECTOR: &'static str = "country_detector"
pub const SEARCH_SERVICE: &'static str = "search"
pub const SENSOR_SERVICE: &'static str = "sensor"
pub const SENSOR_PRIVACY_SERVICE: &'static str = "sensor_privacy"
pub const STORAGE_SERVICE: &'static str = "storage"
pub const STORAGE_STATS_SERVICE: &'static str = "storagestats"
pub const WALLPAPER_SERVICE: &'static str = "wallpaper"
pub const VIBRATOR_MANAGER_SERVICE: &'static str = "vibrator_manager"
pub const VIBRATOR_SERVICE: &'static str = "vibrator"
pub const STATUS_BAR_SERVICE: &'static str = "statusbar"
pub const CONNECTIVITY_SERVICE: &'static str = "connectivity"
pub const PAC_PROXY_SERVICE: &'static str = "pac_proxy"
pub const VCN_MANAGEMENT_SERVICE: &'static str = "vcn_management"
pub const NETD_SERVICE: &'static str = "netd"
pub const NETWORK_STACK_SERVICE: &'static str = "network_stack"
pub const TETHERING_SERVICE: &'static str = "tethering"
pub const IPSEC_SERVICE: &'static str = "ipsec"
pub const VPN_MANAGEMENT_SERVICE: &'static str = "vpn_management"
pub const CONNECTIVITY_DIAGNOSTICS_SERVICE: &'static str = "connectivity_diagnostics"
pub const TEST_NETWORK_SERVICE: &'static str = "test_network"
pub const UPDATE_LOCK_SERVICE: &'static str = "updatelock"
pub const NETWORKMANAGEMENT_SERVICE: &'static str = "network_management"
pub const SLICE_SERVICE: &'static str = "slice"
pub const NETWORK_STATS_SERVICE: &'static str = "netstats"
pub const WIFI_SERVICE: &'static str = "wifi"
pub const WIFI_NL80211_SERVICE: &'static str = "wifinl80211"
pub const WIFI_P2P_SERVICE: &'static str = "wifip2p"
pub const WIFI_AWARE_SERVICE: &'static str = "wifiaware"
pub const WIFI_SCANNING_SERVICE: &'static str = "wifiscanner"
pub const WIFI_RTT_SERVICE: &'static str = "rttmanager"
pub const WIFI_RTT_RANGING_SERVICE: &'static str = "wifirtt"
pub const LOWPAN_SERVICE: &'static str = "lowpan"
pub const ETHERNET_SERVICE: &'static str = "ethernet"
pub const NSD_SERVICE: &'static str = "servicediscovery"
pub const AUDIO_SERVICE: &'static str = "audio"
pub const AUDIO_DEVICE_VOLUME_SERVICE: &'static str = "audio_device_volume"
pub const MEDIA_TRANSCODING_SERVICE: &'static str = "media_transcoding"
pub const AUTH_SERVICE: &'static str = "auth"
pub const FINGERPRINT_SERVICE: &'static str = "fingerprint"
pub const FACE_SERVICE: &'static str = "face"
pub const IRIS_SERVICE: &'static str = "iris"
pub const BIOMETRIC_SERVICE: &'static str = "biometric"
pub const MEDIA_COMMUNICATION_SERVICE: &'static str = "media_communication"
pub const MEDIA_ROUTER_SERVICE: &'static str = "media_router"
pub const MEDIA_SESSION_SERVICE: &'static str = "media_session"
pub const TELEPHONY_SERVICE: &'static str = "phone"
pub const TELEPHONY_SUBSCRIPTION_SERVICE: &'static str = "telephony_subscription_service"
pub const TELECOM_SERVICE: &'static str = "telecom"
pub const CARRIER_CONFIG_SERVICE: &'static str = "carrier_config"
pub const EUICC_SERVICE: &'static str = "euicc"
pub const EUICC_CARD_SERVICE: &'static str = "euicc_card"
pub const MMS_SERVICE: &'static str = "mms"
pub const CLIPBOARD_SERVICE: &'static str = "clipboard"
pub const TEXT_CLASSIFICATION_SERVICE: &'static str = "textclassification"
pub const SELECTION_TOOLBAR_SERVICE: &'static str = "selection_toolbar"
pub const FONT_SERVICE: &'static str = "font"
pub const ATTENTION_SERVICE: &'static str = "attention"
pub const ROTATION_RESOLVER_SERVICE: &'static str = "resolver"
pub const INPUT_METHOD_SERVICE: &'static str = "input_method"
pub const TEXT_SERVICES_MANAGER_SERVICE: &'static str = "textservices"
pub const APPWIDGET_SERVICE: &'static str = "appwidget"
pub const VOICE_INTERACTION_MANAGER_SERVICE: &'static str = "voiceinteraction"
pub const AUTOFILL_MANAGER_SERVICE: &'static str = "autofill"
pub const TEXT_TO_SPEECH_MANAGER_SERVICE: &'static str = "texttospeech"
pub const CONTENT_CAPTURE_MANAGER_SERVICE: &'static str = "content_capture"
pub const TRANSLATION_MANAGER_SERVICE: &'static str = "translation"
pub const UI_TRANSLATION_SERVICE: &'static str = "ui_translation"
pub const CONTENT_SUGGESTIONS_SERVICE: &'static str = "content_suggestions"
pub const APP_PREDICTION_SERVICE: &'static str = "app_prediction"
pub const SEARCH_UI_SERVICE: &'static str = "search_ui"
pub const SMARTSPACE_SERVICE: &'static str = "smartspace"
pub const CLOUDSEARCH_SERVICE: &'static str = "cloudsearch"
pub const SOUND_TRIGGER_SERVICE: &'static str = "soundtrigger"
pub const SOUND_TRIGGER_MIDDLEWARE_SERVICE: &'static str = "soundtrigger_middleware"
pub const WALLPAPER_EFFECTS_GENERATION_SERVICE: &'static str = "wallpaper_effects_generation"
pub const MUSIC_RECOGNITION_SERVICE: &'static str = "music_recognition"
pub const PERMISSION_SERVICE: &'static str = "permission"
pub const LEGACY_PERMISSION_SERVICE: &'static str = "legacy_permission"
pub const PERMISSION_CONTROLLER_SERVICE: &'static str = "permission_controller"
pub const PERMISSION_CHECKER_SERVICE: &'static str = "permission_checker"
pub const PERMISSION_ENFORCER_SERVICE: &'static str = "permission_enforcer"
pub const APP_HIBERNATION_SERVICE: &'static str = "app_hibernation"
pub const BACKUP_SERVICE: &'static str = "backup"
pub const ROLLBACK_SERVICE: &'static str = "rollback"
pub const REBOOT_READINESS_SERVICE: &'static str = "reboot_readiness"
pub const DROPBOX_SERVICE: &'static str = "dropbox"
pub const BACKGROUND_INSTALL_CONTROL_SERVICE: &'static str = "background_install_control"
pub const BINARY_TRANSPARENCY_SERVICE: &'static str = "transparency"
pub const DEVICE_IDLE_CONTROLLER: &'static str = "deviceidle"
pub const POWER_WHITELIST_MANAGER: &'static str = "power_whitelist"
pub const POWER_EXEMPTION_SERVICE: &'static str = "power_exemption"
pub const DEVICE_POLICY_SERVICE: &'static str = "device_policy"
pub const UI_MODE_SERVICE: &'static str = "uimode"
pub const DOWNLOAD_SERVICE: &'static str = "download"
pub const BATTERY_SERVICE: &'static str = "batterymanager"
pub const NFC_SERVICE: &'static str = "nfc"
pub const BLUETOOTH_SERVICE: &'static str = "bluetooth"
pub const SIP_SERVICE: &'static str = "sip"
pub const USB_SERVICE: &'static str = "usb"
pub const ADB_SERVICE: &'static str = "adb"
pub const SERIAL_SERVICE: &'static str = "serial"
pub const HDMI_CONTROL_SERVICE: &'static str = "hdmi_control"
pub const INPUT_SERVICE: &'static str = "input"
pub const DISPLAY_SERVICE: &'static str = "display"
pub const COLOR_DISPLAY_SERVICE: &'static str = "color_display"
pub const USER_SERVICE: &'static str = "user"
pub const LAUNCHER_APPS_SERVICE: &'static str = "launcherapps"
pub const RESTRICTIONS_SERVICE: &'static str = "restrictions"
pub const APP_OPS_SERVICE: &'static str = "appops"
pub const ROLE_SERVICE: &'static str = "role"
pub const CAMERA_SERVICE: &'static str = "camera"
pub const PRINT_SERVICE: &'static str = "print"
pub const COMPANION_DEVICE_SERVICE: &'static str = "companiondevice"
pub const VIRTUAL_DEVICE_SERVICE: &'static str = "virtualdevice"
pub const CONSUMER_IR_SERVICE: &'static str = "consumer_ir"
pub const TRUST_SERVICE: &'static str = "trust"
pub const TV_INTERACTIVE_APP_SERVICE: &'static str = "tv_interactive_app"
pub const TV_INPUT_SERVICE: &'static str = "tv_input"
pub const TV_TUNER_RESOURCE_MGR_SERVICE: &'static str = "tv_tuner_resource_mgr"
pub const NETWORK_SCORE_SERVICE: &'static str = "network_score"
pub const USAGE_STATS_SERVICE: &'static str = "usagestats"
pub const JOB_SCHEDULER_SERVICE: &'static str = "jobscheduler"
pub const RESOURCE_ECONOMY_SERVICE: &'static str = "tare"
pub const PERSISTENT_DATA_BLOCK_SERVICE: &'static str = "persistent_data_block"
pub const OEM_LOCK_SERVICE: &'static str = "oem_lock"
pub const MEDIA_PROJECTION_SERVICE: &'static str = "media_projection"
pub const MIDI_SERVICE: &'static str = "midi"
pub const RADIO_SERVICE: &'static str = "broadcastradio"
pub const HARDWARE_PROPERTIES_SERVICE: &'static str = "hardware_properties"
pub const THERMAL_SERVICE: &'static str = "thermalservice"
pub const PERFORMANCE_HINT_SERVICE: &'static str = "performance_hint"
pub const SHORTCUT_SERVICE: &'static str = "shortcut"
pub const CONTEXTHUB_SERVICE: &'static str = "contexthub"
pub const SYSTEM_HEALTH_SERVICE: &'static str = "systemhealth"
pub const GATEKEEPER_SERVICE: &'static str = "android.service.gatekeeper.IGateKeeperService"
pub const DEVICE_IDENTIFIERS_SERVICE: &'static str = "device_identifiers"
pub const INCIDENT_SERVICE: &'static str = "incident"
pub const INCIDENT_COMPANION_SERVICE: &'static str = "incidentcompanion"
pub const STATS_MANAGER_SERVICE: &'static str = "statsmanager"
pub const STATS_COMPANION_SERVICE: &'static str = "statscompanion"
pub const STATS_BOOTSTRAP_ATOM_SERVICE: &'static str = "statsbootstrap"
pub const STATS_MANAGER: &'static str = "stats"
pub const PLATFORM_COMPAT_SERVICE: &'static str = "platform_compat"
pub const PLATFORM_COMPAT_NATIVE_SERVICE: &'static str = "platform_compat_native"
pub const BUGREPORT_SERVICE: &'static str = "bugreport"
pub const OVERLAY_SERVICE: &'static str = "overlay"
pub const RESOURCES_SERVICE: &'static str = "resources"
pub const IDMAP_SERVICE: &'static str = "idmap"
pub const VR_SERVICE: &'static str = "vrmanager"
pub const CROSS_PROFILE_APPS_SERVICE: &'static str = "crossprofileapps"
pub const SECURE_ELEMENT_SERVICE: &'static str = "secure_element"
pub const TIME_DETECTOR_SERVICE: &'static str = "time_detector"
pub const TIME_ZONE_DETECTOR_SERVICE: &'static str = "time_zone_detector"
pub const TIME_MANAGER_SERVICE: &'static str = "time_manager"
pub const APP_BINDING_SERVICE: &'static str = "app_binding"
pub const TELEPHONY_IMS_SERVICE: &'static str = "telephony_ims"
pub const SYSTEM_CONFIG_SERVICE: &'static str = "system_config"
pub const TELEPHONY_RCS_MESSAGE_SERVICE: &'static str = "ircsmessage"
pub const DYNAMIC_SYSTEM_SERVICE: &'static str = "dynamic_system"
pub const BLOB_STORE_SERVICE: &'static str = "blob_store"
pub const TELEPHONY_REGISTRY_SERVICE: &'static str = "telephony_registry"
pub const BATTERY_STATS_SERVICE: &'static str = "batterystats"
pub const APP_SEARCH_SERVICE: &'static str = "app_search"
pub const APP_INTEGRITY_SERVICE: &'static str = "app_integrity"
pub const DATA_LOADER_MANAGER_SERVICE: &'static str = "dataloader_manager"
pub const INCREMENTAL_SERVICE: &'static str = "incremental"
pub const ATTESTATION_VERIFICATION_SERVICE: &'static str = "attestation_verification"
pub const FILE_INTEGRITY_SERVICE: &'static str = "file_integrity"
pub const REMOTE_PROVISIONING_SERVICE: &'static str = "remote_provisioning"
pub const LIGHTS_SERVICE: &'static str = "lights"
pub const UWB_SERVICE: &'static str = "uwb"
pub const DREAM_SERVICE: &'static str = "dream"
pub const SMS_SERVICE: &'static str = "sms"
pub const PEOPLE_SERVICE: &'static str = "people"
pub const DEVICE_STATE_SERVICE: &'static str = "device_state"
pub const MEDIA_METRICS_SERVICE: &'static str = "media_metrics"
pub const SPEECH_RECOGNITION_SERVICE: &'static str = "speech_recognition"
pub const GAME_SERVICE: &'static str = "game"
pub const DOMAIN_VERIFICATION_SERVICE: &'static str = "domain_verification"
pub const DISPLAY_HASH_SERVICE: &'static str = "display_hash"
pub const LOCALE_SERVICE: &'static str = "locale"
pub const SAFETY_CENTER_SERVICE: &'static str = "safety_center"
pub const NEARBY_SERVICE: &'static str = "nearby"
pub const AMBIENT_CONTEXT_SERVICE: &'static str = "ambient_context"
pub const WEARABLE_SENSING_SERVICE: &'static str = "wearable_sensing"
pub const HEALTHCONNECT_SERVICE: &'static str = "healthconnect"
pub const CREDENTIAL_SERVICE: &'static str = "credential"
pub const DEVICE_LOCK_SERVICE: &'static str = "device_lock"
pub const VIRTUALIZATION_SERVICE: &'static str = "virtualization"
pub const GRAMMATICAL_INFLECTION_SERVICE: &'static str = "grammatical_inflection"
pub const SATELLITE_SERVICE: &'static str = "satellite"
pub const SHARED_CONNECTIVITY_SERVICE: &'static str = "shared_connectivity"
Sourcepub fn get_class_loader(&self) -> ClassLoader
pub fn get_class_loader(&self) -> ClassLoader
返回可用于查询此包中的类的类加载器。
Sourcepub fn send_broadcast(&self, intent: &Intent)
pub fn send_broadcast(&self, intent: &Intent)
将给定的意图广播给所有感兴趣的 BroadcastReceiver。此调用是异步的;它会立即返回,您将在接收器运行时继续执行。接收器不会传播任何结果,接收器也无法中止广播。如果您想允许接收器传播结果或中止广播,则必须使用 sendOrderedBroadcast(Intent, String) 发送有序广播。有关 Intent 广播的更多信息,请参阅 BroadcastReceiver。
intent
要广播的 Intent;与此 Intent 匹配的所有接收器都将收到广播。
Sourcepub fn start_activity(&self, intent: &Intent)
pub fn start_activity(&self, intent: &Intent)
与 startActivity(Intent, Bundle) 相同,但未指定任何选项。
intent
要启动的活动的描述。
抛出:ActivityNotFoundException – `
Sourcepub fn get_package_name(&self) -> String
pub fn get_package_name(&self) -> String
返回此应用程序包的名称。
Sourcepub fn get_base_package_name(&self) -> String
pub fn get_base_package_name(&self) -> String
返回此上下文所派生自的基础上下文的名称。这与 getOpPackageName() 相同,除非系统组件加载到其他应用进程中,在这种情况下 getOpPackageName() 将是该进程中主软件包的名称(以便应用操作 uid 验证可以使用该名称)。
Sourcepub fn get_op_package_name(&self) -> String
pub fn get_op_package_name(&self) -> String
返回应用于此上下文中的 android.app.AppOpsManager 调用的包名称,以便 app ops manager 的 uid 验证可以使用该名称。这通常不适用于第三方应用程序开发人员。
Sourcepub fn get_attribution_tag(&self) -> Option<String>
pub fn get_attribution_tag(&self) -> Option<String>
归因可用于复杂的应用中,以在逻辑上区分应用的各个部分。例如,博客应用可能还内置有即时通讯应用。在这种情况下,每个子功能可以使用两个单独的标签。 返回:此上下文所针对的归因标签,如果这是默认标签,则返回 null。
Sourcepub fn get_package_resource_path(&self) -> String
pub fn get_package_resource_path(&self) -> String
返回此上下文的主要 Android 包的完整路径。Android 包是一个 ZIP 文件,其中包含应用程序的主要资源。注意:这通常对应用程序没有用,因为它们不应直接访问文件系统。 返回:String 资源路径。
Sourcepub fn get_package_code_path(&self) -> String
pub fn get_package_code_path(&self) -> String
返回此上下文的主要 Android 包的完整路径。Android 包是一个 ZIP 文件,其中包含应用程序的主要代码和资产。 注意:这通常对应用程序没有用,因为它们不应直接访问文件系统。 返回:String 代码和资产的路径。
Sourcepub fn get_system_service(&self, name: String) -> Option<Object>
pub fn get_system_service(&self, name: String) -> Option<Object>
按名称返回系统级服务的句柄。返回对象的类因请求的名称而异。当前可用的名称为:
WINDOW_SERVICE (“window”)
您可以在顶级窗口管理器中放置自定义窗口。返回的对象是 WindowManager。只能从可视上下文(例如 Activity 或使用 createWindowContext(int, Bundle) 创建的上下文)中获取,这些上下文会根据屏幕区域的配置和可视边界进行调整。
LAYOUT_INFLATER_SERVICE (“layout_inflater”)
android.view.LayoutInflater 用于在此上下文中填充布局资源。只能从可视上下文(例如 Activity 或使用 createWindowContext(int, Bundle) 创建的上下文)获取,这些上下文会根据屏幕区域的配置和可视边界进行调整。
ACTIVITY_SERVICE (“activity”)
用于与系统全局活动状态交互的 ActivityManager。
WALLPAPER_SERVICE (“wallpaper”)
android.service.wallpaper.WallpaperService 用于在此上下文中访问壁纸。只能从可视上下文(例如 Activity 或使用 createWindowContext(int, Bundle) 创建的上下文)获取,这些上下文会根据屏幕区域的配置和可视边界进行调整。
POWER_SERVICE (“power”)
一个用于控制电源管理的android.os.PowerManager。
ALARM_SERVICE (“alarm”)
一个 Android 应用程序 AlarmManager,用于在您选择的时间接收意图。
NOTIFICATION_SERVICE (“notification”)
android.app.NotificationManager,用于通知用户后台事件。
KEYGUARD_SERVICE (“keyguard”)
一个用于控制键盘锁的 android.app.KeyguardManager。
LOCATION_SERVICE (“location”)
android.location.LocationManager 用于控制位置(例如 GPS)更新。
SEARCH_SERVICE (“search”)
一个用于处理搜索的android.app.SearchManager。
VIBRATOR_MANAGER_SERVICE (“vibrator_manager”)
android.os.VibratorManager,用于访问设备振动器、与各个振动器交互以及在多个振动器上播放同步效果。
VIBRATOR_SERVICE (“vibrator”)
一个android.os.Vibrator,用于与振动器硬件进行交互。
CONNECTIVITY_SERVICE (“connectivity”)
用于处理网络连接管理的 ConnectivityManager。
IPSEC_SERVICE (“ipsec”)
IpSecManager 用于管理套接字和网络上的 IPSec。
WIFI_SERVICE (“wifi”)
用于管理 Wi-Fi 连接的 WifiManager。在 Android 7 之前的版本中,应仅从应用上下文中获取它,而不能从任何其他派生上下文中获取它,以避免调用过程中出现内存泄漏。
WIFI_AWARE_SERVICE (“wifiaware”)
WifiAwareManager 用于管理 Wi-Fi Aware 发现和连接。
WIFI_P2P_SERVICE (“wifip2p”)
WifiP2pManager 用于管理 Wi-Fi Direct 连接。
INPUT_METHOD_SERVICE (“input_method”)
用于管理输入方法的 InputMethodManager。
UI_MODE_SERVICE (“uimode”)
一个用于控制 UI 模式的 android.app.UiModeManager。
DOWNLOAD_SERVICE (“download”)
用于请求 HTTP 下载的 android.app.DownloadManager
BATTERY_SERVICE (“batterymanager”)
用于管理电池状态的 android.os.BatteryManager
JOB_SCHEDULER_SERVICE (“taskmanager”)
一个用于管理计划任务的android.app.job.JobScheduler
NETWORK_STATS_SERVICE (“netstats”)
用于查询网络使用情况统计数据的 NetworkStatsManager。
HARDWARE_PROPERTIES_SERVICE (“hardware_properties”)
用于访问硬件属性的 android.os.HardwarePropertiesManager。
DOMAIN_VERIFICATION_SERVICE (“domain_verification”)
android.content.pm.verify.domain.DomainVerificationManager,用于访问 Web 域批准状态。
DISPLAY_HASH_SERVICE (“display_hash”)
android.view.displayhash.DisplayHashManager 用于管理显示哈希。
注意:通过此 API 获取的系统服务可能与获取它们的上下文密切相关。一般来说,不要在各种不同的上下文(活动、应用程序、服务、提供商等)之间共享服务对象。
注意:PackageManager.isInstantApp() 返回 true 的免安装应用无法访问以下系统服务:DEVICE_POLICY_SERVICE、FINGERPRINT_SERVICE、KEYGUARD_SERVICE、SHORTCUT_SERVICE、USB_SERVICE、WALLPAPER_SERVICE、WIFI_P2P_SERVICE、WIFI_SERVICE、WIFI_AWARE_SERVICE。对于这些服务,此方法将返回 null。通常,如果您以免安装应用的形式运行,则应始终检查此方法的结果是否为 null。
注意:在实现此方法时,请记住可以在较新的 Android 版本中添加新服务,因此如果您只是在寻找上面提到的明确名称,请确保在您无法识别该名称时返回 null — 如果您抛出 RuntimeException 异常,您的应用可能会在新的 Android 版本上中断。
返回:如果名称不存在则返回 null。
name
所需服务的名称。
将现有的共享首选项文件从给定的源存储上下文移动到此上下文。这通常用于升级后在存储位置之间迁移数据,例如移至设备保护的存储。
返回:如果动作成功,或者如果在源上下文中不存在共享偏好,则为false。
source_context
包含现有共享首选项的源上下文。
name
共享首选项文件的名称。
删除现有的共享首选项文件。
返回:如果共享首选项文件已成功删除,则返回 true;否则返回 false。
name
共享首选项文件的名称(在应用程序包中是唯一的)。
Sourcepub fn delete_file(&self, name: String) -> bool
pub fn delete_file(&self, name: String) -> bool
删除与此 Context 的应用程序包关联的给定私有文件。
返回:如果文件已成功删除,则返回 true;否则返回 false。
name
要删除的文件的名称;不能包含路径分隔符。
Sourcepub fn get_file_stream_path(&self, name: String) -> File
pub fn get_file_stream_path(&self, name: String) -> File
返回文件系统中存储使用 openFileOutput 创建的文件的绝对路径。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。
返回:给定文件的绝对路径。
name
您想要获取其路径的文件的名称。
返回文件系统中存储使用 getSharedPreferences(String, int) 创建的文件的绝对路径。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。
返回:给定文件的绝对路径。
name
您想要获取其路径的共享首选项的名称。
Sourcepub fn get_data_dir(&self) -> File
pub fn get_data_dir(&self) -> File
返回文件系统中存储此应用所有私有文件的目录的绝对路径。应用不应直接使用此路径;而应使用 getFilesDir()、getCacheDir()、getDir(String, int) 或此类上的其他存储 API。 如果调用应用移动到已采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。调用应用无需额外权限即可读取或写入返回路径下的文件。
Sourcepub fn get_files_dir(&self) -> File
pub fn get_files_dir(&self) -> File
返回文件系统中存储使用 openFileOutput 创建的文件的目录的绝对路径。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。 调用应用程序无需额外权限即可读取或写入返回路径下的文件。保存应用程序文件的目录的路径。
Sourcepub fn get_crate_dir(&self, crate_id: String) -> File
pub fn get_crate_dir(&self, crate_id: String) -> File
返回与文件系统上的 crate 相关的目录的绝对路径。crate_id
需要经过验证的文件名。它不能包含任何“..”、“.”、File.separatorChar 等。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。调用应用程序无需额外权限即可读取或写入返回路径下的文件。
返回:crate 目录文件。
crate_id
getDataDir()/ crates 下的经过验证的相对文件名
Sourcepub fn get_no_backup_files_dir(&self) -> File
pub fn get_no_backup_files_dir(&self) -> File
返回文件系统上目录的绝对路径,类似于 getFilesDir()。不同之处在于,放置在此目录下的文件将被排除在自动备份到远程存储之外。 有关 Android 中自动备份机制的完整讨论,请参阅 BackupAgent。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。 调用应用程序无需额外权限即可读取或写入返回路径下的文件。 返回:包含不会自动备份到远程存储的应用程序文件的目录的路径。
Sourcepub fn get_external_files_dir(&self, type: Option<String>) -> Option<File>
pub fn get_external_files_dir(&self, type: Option<String>) -> Option<File>
返回主共享/外部存储设备上目录的绝对路径,应用程序可在该目录中放置其拥有的持久文件。这些文件是应用程序内部的,通常不作为媒体对用户可见。
这与 getFilesDir() 类似,因为这些文件将在应用程序卸载时被删除,但存在一些重要区别:共享存储可能并非始终可用,因为用户可以弹出可移动媒体。可以使用 Environment.getExternalStorageState(File) 检查媒体状态。
这些文件没有强制执行安全性。例如,任何拥有 android.Manifest.permission.WRITE_EXTERNAL_STORAGE 的应用程序都可以写入这些文件。
如果共享存储设备是模拟的(由 Environment.isExternalStorageEmulated(File) 确定),则其内容由私有用户数据分区支持,这意味着将数据存储在此处而不是 getFilesDir() 返回的私有目录中几乎没有好处。
从 Build.VERSION_CODES.KITKAT开始,无需任何权限即可读取或写入返回的路径;调用应用程序始终可以访问它。这仅适用于为调用应用程序的软件包名称生成的路径。
要访问属于其他软件包的路径,需要 android.Manifest.permission.WRITE_EXTERNAL_STORAGE 和/或 android.Manifest.permission.READ_EXTERNAL_STORAGE。
在具有多个用户的设备上(如 UserManager 所述),每个用户都有自己独立的共享存储。应用程序只能访问他们以该用户身份运行的共享存储。
如果插入了不同的共享存储介质,则返回的路径可能会随时间而变化,因此只应保留相对路径。以下是操作应用程序共享存储中的文件的典型代码示例:
@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java private_file
如果您为此函数提供非空类型,则返回的文件将是指向给定类型的子目录的路径。虽然媒体扫描仪不会自动扫描这些文件,但您可以使用 MediaScannerConnection.scanFile 将它们明确添加到媒体数据库。
请注意,这与 Environment.getExternalStoragePublicDirectory() 不同,后者提供所有应用程序共享的媒体目录。此处返回的目录归应用程序所有,卸载应用程序时将删除其内容。
与 Environment.getExternalStoragePublicDirectory() 不同,此处返回的目录将自动为您创建。以下是操作应用程序共享存储中的图片并将其添加到媒体数据库的典型代码示例:
@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java private_picture
返回:应用程序特定目录的绝对路径。如果共享存储当前不可用,则可能返回 null。
type
要返回的文件目录的类型。对于文件目录的根目录,可能为 null;对于子目录,可能为以下常量之一:
Environment.DIRECTORY_MUSIC、Environment.DIRECTORY_PODCASTS、Environment.DIRECTORY_RINGTONES、Environment.DIRECTORY_ALARMS、Environment.DIRECTORY_NOTIFICATIONS、Environment.DIRECTORY_PICTURES 或 Environment.DIRECTORY_MOVIES。
Sourcepub fn get_obb_dir(&self) -> Option<File>
pub fn get_obb_dir(&self) -> Option<File>
返回可找到此应用程序的 OBB 文件(如果有)的主要共享/外部存储目录。请注意,如果应用程序没有任何 OBB 文件,则此目录可能不存在。 这与 getFilesDir() 类似,当应用程序卸载时这些文件将被删除,但也存在一些重要的区别: 共享存储可能并不总是可用,因为用户可以弹出可移动媒体。可以使用 Environment.getExternalStorageState(File) 检查媒体状态。 这些文件没有强制实施安全性。例如,任何持有 android.Manifest.permission.WRITE_EXTERNAL_STORAGE 的应用程序都可以写入这些文件。 从 Build.VERSION_CODES.KITKAT 开始,无需任何权限即可读取或写入此方法返回的路径。但是,从 Build.VERSION_CODES.M 开始,要读取 OBB 扩展文件,您必须在应用清单中声明 android.Manifest.permission.READ_EXTERNAL_STORAGE 权限,并在运行时请求权限,如下所示: <uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE” android:maxSdkVersion=“23” /> 从 Build.VERSION_CODES.N 开始,android.Manifest.permission.READ_EXTERNAL_STORAGE 权限不再需要,因此不要在运行时请求此权限。要处理这两种情况,您的应用必须先尝试读取 OBB 文件,如果失败,您必须在运行时请求 android.Manifest.permission.READ_EXTERNAL_STORAGE 权限。以下代码片段显示了如何执行此操作: File obb = new File(obb_filename); boolean open_failed = false; try { BufferedReader br = new BufferedReader(new FileReader(obb)); open_failed = false; ReadObbFile(br); } catch (IOException e) { open_failed = true; } if (open_failed) { // 读取 OBB 文件之前请求 READ_EXTERNAL_STORAGE 权限 ReadObbFileWithPermission(); } 在具有多个用户的设备上(如 UserManager 所述),多个用户可能共享同一个 OBB 存储位置。应用程序应确保在不同用户下运行的多个实例不会互相干扰。 返回:应用程序特定目录的绝对路径。如果共享存储当前不可用,则可能返回 null。
Sourcepub fn get_cache_dir(&self) -> File
pub fn get_cache_dir(&self) -> File
返回文件系统上应用程序特定缓存目录的绝对路径。系统将自动删除此目录中的文件,因为设备上的其他地方需要磁盘空间。 系统将始终首先删除较旧的文件,如 File.lastModified() 所报告的。如果需要,您可以使用 StorageManager.setCacheBehaviorGroup(File, boolean) 和 StorageManager.setCacheBehaviorTombstone(File, boolean) 对文件的删除方式进行更多控制。 强烈建议应用程序将其缓存空间使用量保持在 StorageManager.getCacheQuotaBytes(java.util.UUID) 返回的配额以下。如果您的应用程序超出此配额,则在需要额外磁盘空间时,您的缓存文件将是第一批被删除的文件。 相反,如果您的应用程序保持在此配额以下,则在需要额外磁盘空间时,您的缓存文件将是最后被删除的文件。请注意,您的缓存配额将随着时间的推移而变化,具体取决于用户与您的应用程序交互的频率以及系统范围磁盘空间的使用量。 如果调用应用程序移至已采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。 返回:保存应用程序缓存文件的目录的路径。
Sourcepub fn get_code_cache_dir(&self) -> File
pub fn get_code_cache_dir(&self) -> File
返回文件系统上用于存储缓存代码的应用程序特定缓存目录的绝对路径。当您的特定应用程序升级时以及整个平台升级时,系统都会删除存储在此位置的所有文件。 此位置最适合存储应用程序在运行时生成的编译或优化代码。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。 应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。 返回:保存应用程序代码缓存文件的目录的路径。
Sourcepub fn get_external_cache_dir(&self) -> Option<File>
pub fn get_external_cache_dir(&self) -> Option<File>
返回主共享/外部存储设备上应用程序特定目录的绝对路径,应用程序可将其拥有的缓存文件放置在该目录中。这些文件是应用程序内部的,通常不会作为媒体对用户可见。 这与 getCacheDir() 类似,因为这些文件将在应用程序卸载时被删除,但存在一些重要区别:平台并不总是监控共享存储中的可用空间,因此可能不会自动删除这些文件。应用程序应始终管理此位置使用的最大空间。 目前,平台只会在 Build.VERSION_CODES.JELLY_BEAN_MR1 或更高版本上运行且 Environment.isExternalStorageEmulated(File) 返回 true 时删除此处的文件。共享存储可能并非始终可用,因为用户可以弹出可移动媒体。 可以使用 Environment.getExternalStorageState(File) 检查媒体状态。这些文件没有强制执行安全性。例如,任何拥有 android.Manifest.permission.WRITE_EXTERNAL_STORAGE的应用程序可以写入这些文件。 如果共享存储设备是模拟的(由 Environment.isExternalStorageEmulated(File) 确定),则其内容由私有用户数据分区支持,这意味着将数据存储在此处而不是 getCacheDir() 返回的私有目录中几乎没有好处。 从 Build.VERSION_CODES.KITKAT 开始,无需任何权限即可读取或写入返回的路径;调用应用程序始终可以访问它。这仅适用于为调用应用程序的软件包名称生成的路径。 要访问属于其他软件包的路径,需要 android.Manifest.permission.WRITE_EXTERNAL_STORAGE 和/或 android.Manifest.permission.READ_EXTERNAL_STORAGE。在具有多个用户的设备上(如 UserManager 所述),每个用户都有自己独立的共享存储。 应用程序只能访问他们以该用户身份运行的共享存储。如果插入不同的共享存储介质,则返回的路径可能会随时间而变化,因此只应保留相对路径。 返回:应用程序特定目录的绝对路径。如果共享存储当前不可用,则可能返回 null。
Sourcepub fn get_preloads_file_cache(&self) -> Option<File>
pub fn get_preloads_file_cache(&self) -> Option<File>
返回预加载缓存中应用程序特定目录的绝对路径。当设备存储空间不足时,可以删除存储在缓存目录中的文件。无法保证何时删除这些文件。
Sourcepub fn get_dir(&self, name: String, mode: i32) -> File
pub fn get_dir(&self, name: String, mode: i32) -> File
查询(如果需要)创建一个新目录,应用程序可以在其中放置其自己的自定义数据文件。您可以使用返回的 File 对象创建和访问此目录中的文件。
请注意,通过 File 对象创建的文件只能由您自己的应用程序访问;您只能设置整个目录的模式,而不能设置单个文件的模式。
如果调用应用程序移动到采用的存储设备,则返回的路径可能会随之变化,因此只应保留相对路径。应用程序不需要额外的权限来读取或写入返回的路径,因为此路径位于其私有存储中。
返回:请求的目录的 File 对象。如果目录尚不存在,则将创建该目录。
name
要查询的目录的名称。这是作为应用程序数据的一部分创建的目录。
mode
操作模式。
Sourcepub fn move_database_from(&self, source_context: &Self, name: String) -> bool
pub fn move_database_from(&self, source_context: &Self, name: String) -> bool
将现有数据库文件从给定的源存储上下文移动到此上下文。这通常用于在升级后在存储位置之间迁移数据,例如迁移到受设备保护的存储。移动数据库之前必须关闭数据库。
返回:如果移动成功或源上下文中不存在数据库,则返回 true,否则返回 false。
source_context
包含要移动的现有数据库的源上下文。
name
数据库文件的名称。
Sourcepub fn get_database_path(&self, name: String) -> File
pub fn get_database_path(&self, name: String) -> File
返回文件系统上存储使用 openOrCreateDatabase 创建的数据库的绝对路径。如果调用应用程序移动到采用的存储设备,则返回的路径可能会随时间而变化,因此只应保留相对路径。
返回:给定数据库的绝对路径。
name
您想要获取其路径的数据库的名称。
Sourcepub fn start_service(
&self,
service: &Intent,
) -> Result<ComponentName, <Self as JType>::Error>
pub fn start_service( &self, service: &Intent, ) -> Result<ComponentName, <Self as JType>::Error>
请求启动给定的应用服务。Intent 应包含要启动的特定服务实现的完整类名,或要定位的特定包名。 如果 Intent 指定的内容较少,则会记录有关此情况的警告。在这种情况下,可以使用多个匹配的服务中的任何一个。 如果此服务尚未运行,它将被实例化并启动(如果需要,为其创建一个进程);如果它正在运行,则它将保持运行状态。 每次调用此方法都将导致对目标服务的 android.app.Service.onStartCommand 方法的相应调用,并带有此处给出的意图。 这提供了一种向服务提交作业的便捷方式,而无需绑定并调用其接口。使用 startService() 会覆盖 bindService 管理的默认服务生命周期:它要求服务保持运行,直到调用 stopService,无论是否有任何客户端连接到它。 请注意,对 startService() 的调用不会嵌套:无论您调用 startService() 多少次,对 stopService 的一次调用都会停止它。 系统会尝试尽可能地保持服务运行。只有在当前前台应用程序使用的资源太多而需要终止服务时,才应停止服务。如果服务进程中发生任何错误,它将自动重新启动。 如果您无权启动给定的服务,此函数将抛出 SecurityException。 注意:每次调用 startService() 都会导致系统完成大量工作来管理围绕意图处理的服务生命周期,这可能需要数毫秒的 CPU 时间。 由于此成本,startService() 不应用于频繁向服务传递意图,而应仅用于安排重要工作。对高频调用使用绑定服务。 从 SDK 版本 Build.VERSION_CODES.O 开始,以 SDK 版本 Build.VERSION_CODES.O 或更高版本为目标的应用不允许从后台启动后台服务。有关更多详细信息,请参阅后台执行限制。 注意:从 SDK 版本 Build.VERSION_CODES.S 开始,以 SDK 版本 Build.VERSION_CODES.S 为目标的应用S 或更高版本的 Android 不允许从后台启动前台服务。有关更多详细信息,请参阅行为变更:针对 Android 12 的应用。 返回:如果服务正在启动或已在运行,则返回已启动的实际服务的 ComponentName;否则,如果服务不存在,则返回 null。 抛出:
- SecurityException – 如果调用者无权访问服务或找不到服务。
- IllegalStateException – Android Build.VERSION_CODES.S 之前,如果应用程序处于无法启动服务的状态(例如,在允许服务的状态下不在前台),则抛出 IllegalStateException。
- BackgroundServiceStartNotAllowedException – Android Build.VERSION_CODES。 S 及更高版本中,如果应用程序处于无法启动服务的状态(比如在允许服务的状态下未处于前台),则会引发 android.app.BackgroundServiceStartNotAllowedException。此豁免扩展了 IllegalStateException,因此应用程序可以使用 catch(IllegalStateException) 来捕获这两者。
service
标识要启动的服务。Intent 必须完全明确(提供组件名称)。Intent extras 中可以包含其他值,以提供与此特定启动调用一起的参数。
Sourcepub fn check_self_permission(&self, permission: String) -> i32
pub fn check_self_permission(&self, permission: String) -> i32
确定您是否被授予了特定权限。
如果您拥有该权限,则返回:PackageManager.PERMISSION_GRANTED;如果没有,则返回:PackageManager.PERMISSION_DENIED。
permission
正在检查的权限的名称。
Sourcepub fn check_calling_permission(&self, permission: String) -> i32
pub fn check_calling_permission(&self, permission: String) -> i32
确定您正在处理的 IPC 的调用进程是否已被授予特定权限。这与使用 android.os.Binder.getCallingPid 和 android.os.Binder.getCallingUid 返回的 pid 和 uid 调用 checkPermission(String, int, int) 基本相同。
一个重要的区别是,如果您当前没有处理 IPC,则此函数将始终失败。这样做是为了防止意外泄露权限;您可以使用 checkCallingOrSelfPermission 来避免这种保护。
返回:如果调用 pid/uid 被允许该权限,则返回 PackageManager.PERMISSION_GRANTED,否则返回 PackageManager.PERMISSION_DENIED。
permission
正在检查的权限的名称。