• prefProvider.kt


    package com.gh0u1l5.wechatmagician.frontend
    
    import android.content.ContentProvider
    import android.content.ContentValues
    import android.content.Context.MODE_PRIVATE
    import android.content.SharedPreferences
    import android.database.Cursor
    import android.database.MatrixCursor
    import android.net.Uri
    import com.gh0u1l5.wechatmagician.Global.PREFERENCE_NAME_DEVELOPER
    import com.gh0u1l5.wechatmagician.Global.PREFERENCE_NAME_SETTINGS
    import com.gh0u1l5.wechatmagician.util.IPCUtil.getProtectedSharedPreferences
    
    // PrefProvider shares the preferences using content provider model.
    class PrefProvider : ContentProvider() {
    
        private val preferences: MutableMap<String, SharedPreferences> = mutableMapOf()
    
        private fun getPreferenceType(value: Any?): String {
            return when (value) {
                null -> "Null"
                is Int -> "Int"
                is Long -> "Long"
                is Float -> "Float"
                is Boolean -> "Boolean"
                is String -> "String"
                is Set<*> -> "StringSet"
                else -> "${value::class.java}"
            }
        }
    
        override fun onCreate(): Boolean {
            preferences[PREFERENCE_NAME_SETTINGS]  = 
    context.getProtectedSharedPreferences(PREFERENCE_NAME_SETTINGS, MODE_PRIVATE) preferences[PREFERENCE_NAME_DEVELOPER]
    =
    context.getProtectedSharedPreferences(PREFERENCE_NAME_DEVELOPER, MODE_PRIVATE)
    return true } override fun getType(uri: Uri?): String? = null override fun insert(uri: Uri?, values: ContentValues?): Uri { throw UnsupportedOperationException("Wechat Magician PrefProvider: Cannot modify read-only preferences!") } override fun query(uri: Uri?, projection: Array<out String>?, selection: String?,
    selectionArgs: Array<out String>?, sortOrder: String?): Cursor? { if (uri == null) { return null } val segments = uri.pathSegments if (segments.size != 1) { return null } val preference = preferences[segments[0]] ?: return null return MatrixCursor(arrayOf("key", "value", "type")).apply { preference.all.forEach { entry -> val type = getPreferenceType(entry.value) addRow(arrayOf(entry.key, entry.value, type)) } } } override fun update(uri: Uri?, values: ContentValues?, selection: String?,
    selectionArgs: Array<out String>?): Int { throw UnsupportedOperationException("Wechat Magician PrefProvider: Cannot modify read-only preferences!") } override fun delete(uri: Uri?, selection: String?,
    selectionArgs: Array<out String>?): Int { throw UnsupportedOperationException("Wechat Magician PrefProvider: Cannot modify read-only preferences!") } }
  • 相关阅读:
    AHK的OnMessage
    VBA7种文档遍历法
    Excel VBA 找出选定范围不重复值和重复值
    Excel图片调整大小
    Excel信息提取之二
    Excel不同工作簿之间提取信息
    VBA7种遍历方法
    Exce信息提取
    php笔记之文件载入和异常处理
    php笔记之流程控制
  • 原文地址:https://www.cnblogs.com/hoomob/p/9428179.html
Copyright © 2020-2023  润新知