精华内容
下载资源
问答
  • 玩手机稍微久点的朋友都知道,保持手机内的应用为最新...那么,华为手机怎样才能开启应用自动更新呢?首先,在手机桌面从屏幕顶部往下拉,调出通知栏。调出通知栏以后,点击WLAN或移动数据,将手机联上网。手机联网...

    玩手机稍微久点的朋友都知道,保持手机内的应用为最新版本,不但可以尽早地用上新功能,而且还能最大限度地保证手机的安全。

    当然了,如果每次手机开机都去检查安装的应用是否为最新版本,时间一长也难免烦不胜烦,要是能够让手机内的所有应用都能自动升级自然是最好了。

    那么,华为手机怎样才能开启应用自动更新呢?

    首先,在手机桌面从屏幕顶部往下拉,调出通知栏。

    调出通知栏以后,点击WLAN或移动数据,将手机联上网。

    手机联网之后,回到手机桌面,点击打开华为手机系统自带的应用市场。

    打开应用市场的界面之后,点击切换到“管理”选项卡。

    在管理选项卡中,点击进入“更新管理”。

    然后,将“WLAN闲时自动更新”的开关打开。

    经过这样设置以后,每当我们使用 WIFI 连接网络时,就会自动对手机内安装的应用进行更新了。

    使用这种方法对手机内的应用进行自动更新是在后台进行的,并不会弹窗要求你手动点击。

    相关阅读:

    以上就是本篇文章的全部内容了,希望对各位有所帮助。如果大家还有其他方面的问题,可以留言交流,请持续关注脚本之家!

    展开全文
  • 如果开启自动更新怎么样? 该功能仅适用于预载了 Messenger 应用的 Android 设备。 如果开启自动更新,当该应用程序有更新时,将自动安装更新。 自动更新时是否会耗费手机流量? 该功能仅适用于预载了 Messenger ...

    如果开启自动更新会怎么样? 该功能仅适用于预载了 Messenger 应用的 Android 设备。 如果开启自动更新,当该应用程序有更新时,将自动安装更新。

    自动更新时是否会耗费手机流量? 该功能仅适用于预载了 Messenger 应用的 Android 设备。 不会。自动更新只会在移动设备连接 Wi-Fi 时进行。

    如何开启或关闭自动更新? 该功能仅适用于预载了 Messenger 应用的 Android 设备。

    要开启或关闭自动更新: 轻触帮助和设置中的应用设置 向下滚动,然后轻触应用更新 轻触自动更新以移动到开或关位置

    如何开启或关闭更新通知? 该功能仅适用于预载了 Messenger 应用的 Android 设备。

    要开启或关闭更新通知: 轻触帮助和设置中的应用设置 向下滚动,然后轻触应用更新 轻触开关,将更新通知设置移动到开或关位置

    如何禁用 Facebook 的所有更新服务? 该功能仅适用于预载了 Messenger 应用的 Android 设备。

    要禁用 Facebook 的所有更新: 打开手机的设备设置 轻触应用管理或应用 向下滚动,然后轻触应用程序安装 轻触禁用 返回应用管理或应用 向下滚动,然后轻触应用程序管理 轻触禁用

    展开全文
  • Python 自动发送邮件详细教程

    千次阅读 2020-06-26 23:45:57
    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢...

    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢?

    类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件;还比如网站宕机了,实时发送邮件提醒;又比如网站负载过高,发送邮件提醒…等等。

    下面就来讲讲怎么用Python构建一个自动发送邮件的脚本。

    1.开启SMTP服务

    为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务:

    这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。

    邮箱设定成功后,就可以开始脚本开发了。

    2.准备

    开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

    Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

    当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。

    在终端输入以下命令安装我们所需要的依赖模块:

    pip install yagmail
    

    看到 Successfully installed xxx 则说明安装成功。本文全部源代码可在公众号后台回复:自动发送邮件 获得。

    3.编写脚本

    今天需要用到的模块是yagmail,一个非常方便的Python邮件发送模块,用这个模块,你甚至能一行命令发送邮件:

    yag = yagmail.SMTP(
        host='smtp.qq.com', user='你的邮箱',
        password='你的授权码', smtp_ssl=True
    ).send('发送对象', '主题', '内容')
    

    为了让这个发送邮件的方法更加具备可用性,我们将其封装到一个类中:

    import yagmail 
    class Mail:
        """
        邮件相关类
        """ 
        def sendmail(self, msg, title, receivers):
            """
            发送邮件
            
            Arguments:
                msg {str} -- 邮件正文
                title {str} -- 邮件标题
                receivers {list} -- 邮件接收者,数组
            """
    
            yag = yagmail.SMTP(
                host='smtp.qq.com', user='你的邮箱',
                password='你的鉴权码', smtp\_ssl=True
            )
    
            try:
                yag.send(receivers, title, msg)
                print("邮件发送成功")
    
            except BaseException as e:
                print (e)
                print("Error: 无法发送邮件") 
    

    这个类里还可以封装很多其他东西,比如log函数,用于显示时间:

    import time
    class Mail:
        """
        邮件相关类
        """
    
        def log(self, content):
            now\_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            print(f'{now\_time}: {content}')
    

    这样,需要显示时间的时候只需要调用self.log即可,可将sendmail函数改成如下所示:

        def sendmail(self, msg, title, receivers):
            """
            发送邮件
            
            Arguments:
                msg {str} -- 邮件正文
                title {str} -- 邮件标题
                receivers {list} -- 邮件接收者,数组
            """
    
            yag = yagmail.SMTP(
                host='smtp.qq.com', user='你的邮箱',
                password='你的鉴权码', smtp_ssl=True
            )
    
            try:
                yag.send(receivers, title, msg)
                self.log("邮件发送成功")
    
            except BaseException as e:
                print (e)
                self.log("Error: 无法发送邮件")
    
    

    发送成功时显示:

    PS D:\\CODE\\stock\\api> python .\\sendmail\_yagmail.py
    2020-04-22 00:51:34: 邮件发送成功
    

    4.小例子

    将刚刚编写完的类保存为sendmail.py,接下来就可以尝试一个小例子。我们用一个自动监控网站是否宕机的小脚本做示例:

    import time
    import requests
    from sendmail import Mail
    
    while True:
        response = requests.get('https://pythondict.com')
    
        # 根据状态码判断网站是否正常
        if response.status_code != 200:
            Mail().sendmail(
                '哥, pythondict挂了', 'Python实用宝典网站异常监控', ['你的邮箱']
            )
    
        time.sleep(600)
    

    通过requests.get请求网站,使用response.status_code即可得到状态码,200为正常,其他情况均为异常。这个检测每十分钟运行一次,因此 time.sleep(600).

    就这样,我们构建起了一个非常简单的网站异常监控脚本,如果你真的要在服务器上运行这个脚本,请记得使用nohup让其在后台运行。

    总之,自动发送邮件的用途非常广泛,不亚于手机自动通知,具体使用就要看各位自身的需求啦。

    自动通知系列文章:

    让Python自动提醒你:阿森纳进球啦!

    Python 自动发送邮件详细教程

    我们的文章到此就结束啦,如果你希望我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!


    Python实用宝典
    不只是一个宝典
    欢迎关注公众号:Python实用宝典

    原文来自Python实用宝典:Python 自动发送邮件详细教程

    Python实用宝典

    展开全文
  • 可能你会说,这有什么奇怪的,应用市场开启自动更新不就可以了么? 真的是这样吗? 为此,我特意查看了我手机上的某宝APP的当前版本,并对比了历史版本上的图标,发现并不对应。 默认是88会员节专属图标,而现在...

    作者:椎锋陷陈

    前言

    也许你也注意到了,在临近双11之际,手机上电商类APP的应用图标已经悄无声息换成了双11专属图标,比如某宝和某东:

    可能你会说,这有什么奇怪的,应用市场开启自动更新不就可以了么?

    真的是这样吗?

    为此,我特意查看了我手机上的某宝APP的当前版本,并对比了历史版本上的图标,发现并不对应。

    默认是88会员节专属图标,而现在显示的是双11图标。

    那么,作为开发者的嗅觉,让你自然而然想要从技术角度揣测是怎么实现的,而这便是这篇文章想要与你分享的。


    知识储备

    某一个Activity 的别名,用于实例化该目标Activity。目标必须与别名在同一应用中,并且在清单中必须在别名之前进行声明。
    介绍下几个重要的属性:
    android:enabled:必须设为“true”,系统才能通过别名实例化目标 Activity
    android:icon:通过别名呈现给用户时目标 Activity 的图标。
    android:name:别名的唯一名称。与目标 Activity 的名称不同,别名名称是任意的,它不引用实际类。
    android:targetActivity:可通过别名激活的 Activity 的名称。

    PackageManager#setComponentEnabledSetting

    可以利用 PackageManager 在清单文件中所定义的任何组件上切换启用状态,包括您想启用或停用的任何一个Activity。

    有了以上知识储备后,下面就该剖析一下这个需求的具体场景了。


    场景剖析

    以电商类APP双11活动为例,在双11活动开始前的某个时间点(比如10天前)就要开始对活动的预热,此时就要实现图标的自动更换,而在活动结束之后,也必须要能更换回正常图标,并且要求过程尽量对用户无感知,更不能影响用户对APP的正常使用。

    具体拆分成要实现的功能点便是:图标更换、自动操作、用户无感知。


    方案实现

    1.图标更换:禁用Launcher组件,启用Alias组件,并将targetActivity指向原先的Launcher组件。
    2.自动操作:指定日期转换为时间戳,并与当前时间戳对比,超过预设时间则执行替换操作。
    3.用户无感知:尽量选择APP不活跃的阶段的,比如切换应用/回到桌面时。


    代码实践

    首先,我们需要在AndroidManifest清单文件中添加元素,默认为禁用状态,name属性作为我们找到此组件的唯一标志,而icon属性即是我们要替换的图标资源,并通过targetActivity属性将作为LANCHUER的SplashActivity作为实例化的目标 Activity:

    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    <!--88会员节专属Activity别名-->
    <activity-alias
        android:name=".SplashAliasActivity"
        android:enabled="false"
        android:icon="@mipmap/ic_launcher_88"
        android:targetActivity=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity-alias>
    
    <!--双11专属Activity别名-->
    <activity-alias
        android:name=".SplashAlias2Activity"
        android:enabled="false"
        android:icon="@mipmap/ic_launcher_11_11"
        android:targetActivity=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity-alias>
    
    

    随后,我们图标替换的工作视作一项任务,定义一个数据类:

    /**
     * 切换图标任务
     */
    data class SwitchIconTask (val launcherComponentClassName: String,  // 启动器组件类名
                               val aliasComponentClassName: String,  // 别名组件类名
                               val presetTime: Long,            // 预设时间
                               val outDateTime: Long)           // 过期时间
    
    

    定义一个LauncherIconManager单例,负责图标更换相关的工作。开放添加图标切换任务的接口,做好参数合法性的校验:

    /**
     * 启动器图标管理器
     */
    object LauncherIconManager {
    
        /** 切换图标任务Map */
        private val taskMap: LinkedHashMap<String, SwitchIconTask> = LinkedHashMap()
    
        /**
         * 添加图标切换任务
         * @param newTasks 新任务,可以传多个
         */
        fun addNewTask(vararg newTasks: SwitchIconTask) {
            for (newTask in newTasks) {
                // 防止重复添加任务
                if (taskMap.containsKey(newTask.aliasComponentClassName)) return
    
                // 校验任务的预设时间和过期时间
                for (queuedTask in taskMap.values) {
                    if (newTask.presetTime > newTask.outDateTime) throw IllegalArgumentException("非法的任务预设时间${newTask.presetTime}, 不能晚于过期时间")
                    if (newTask.presetTime <= queuedTask.outDateTime) throw IllegalArgumentException("非法的任务预设时间${newTask.presetTime}, 不能早于已添加任务的过期时间")
                }
    
                taskMap[newTask.aliasComponentClassName] = newTask
            }
        }
    
        ...
    }
    
    
    LauncherIconManager.addNewTask(
        SwitchIconTask(
            SplashActivity::class.java.name,
            "$packageName.SplashAliasActivity",
            format.parse("2020-08-02").time,
            format.parse("2020-08-09").time
        ),
        SwitchIconTask(
            SplashActivity::class.java.name,
            "$packageName.SplashAlias2Activity",
            format.parse("2020-11-05").time,
            format.parse("2020-11-12").time
        )
    )
    
    

    通过Application#registerActivityLifecycleCallbacks方法注册了对应用内Activity生命周期的监听,通过是否有活跃状态的Activity判断应用是否进入了后台:

    /**
     * 应用运行状态注册器
     */
    object RunningStateRegister {
    
        fun register(application: Application, callback: StateCallback) {
            application.registerActivityLifecycleCallbacks(object : SimpleActivityLifecycleCallbacks() {
                private var startedActivityCount = 0
                override fun onActivityStarted(activity: Activity) {
                    if (startedActivityCount == 0) {
                        callback.onForeground()
                    }
                    startedActivityCount++
                }
    
                override fun onActivityStopped(activity: Activity) {
                    startedActivityCount--
                    if (startedActivityCount == 0) {
                        callback.onBackground()
                    }
                }
            })
        }
    
    }   
    
    
    class BaseApplication : Application() {
    
        override fun onCreate() {
            super.onCreate()
            LauncherIconManager.register(this)
        }
    }
    
    

    判断应用进入后台后,就可以开始对图标的更换工作了:

    /**
     * 启动器图标管理器
     */
    object LauncherIconManager {
        ...
    
        /**
         * 注册以监听应用运行状态
         */
        fun register(application: Application) {
            RunningStateRegister.register(application, object: RunningStateRegister.StateCallback{
                override fun onForeground() {
                }
    
                override fun onBackground() {
                    proofreadingInOrder(application)
                }
            })
        }
    
        /**
         * 依次校对预设时间
         * @param context 上下文
         */
        fun proofreadingInOrder(context: Context) {
            for (task in taskMap.values) {
                if (proofreading(context, task)) break
            }
        }
    
        /**
         * 校对预设时间/过期时间
         * @param context 上下文
         * @return true 已过预设时间      false 未达预设时间或已过期
         */
        private fun proofreading(context: Context, task: SwitchIconTask) =
            when {
                isPassedOutDateTime(task) -> {
                    disableComponent(context, ActivityUtil.getLauncherActivityName(context)!!)
                    enableComponent(context, task.launcherComponentClassName)
                    false
                }
                isPassedPresetTime(task) -> {
                    disableComponent(context, ActivityUtil.getLauncherActivityName(context)!!)
                    enableComponent(context, task.aliasComponentClassName)
                    true
                }
                else -> false
            }
    
        /**
         * 是否已超过预设时间
         * @param task 任务
         */
        private fun isPassedPresetTime(task: SwitchIconTask) =
            System.currentTimeMillis() > task.presetTime
    
        /**
         * 是否已超过过期时间
         * @param task 任务
         *
         */
        private fun isPassedOutDateTime(task: SwitchIconTask) =
            System.currentTimeMillis() > task.outDateTime
    
        ...
    }        
    
    

    以上代码均已上传到GitHub。核心的类都封装到Library模块了,并提供Demo模块演示如何使用。


    效果预览


    总结

    通过以上构建的方案,便可让我们的APP在预设的时间点实现对应用图标的自动替换,缺点是只能加载随APK打包的图片资源,适用于运营活动时间相对固定的的场景。

    展开全文
  • 喵驾车机版作为专业可操作性的车载导航服务应用,可以直接连接汽车,开启互联、导航、投屏、语音播报等智能服务,为了更优质地服务司机朋友们,建议你升级到最新版本。车机固件下载:方法一:通过喵驾APP下载并推荐...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • 可能你会说,这有什么奇怪的,应用市场开启自动更新不就可以了么? 真的是这样吗? 为此,我特意查看了我手机上的某宝APP的当前版本,并对比了历史版本上的图标,发现并不对应。 默认是88会员节专属图标,而...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
  • 开启/关闭自动翻译 - Ctrl + Shift + Y / Control + Meta + U FAQ 出现网络错误或者网络连接超时怎么办? 答:请按照以下步骤操作以尝试解决问题。 检查网络环境,确保网络畅通。 检查是否是因为使用了...
  • 很多回显方式在本地测试OK,但是在实际环境中却不行,这个问题我不知道该怎么解决,希望有师傅可以指导下或者一起讨论下。 ShiroExploit 支持对Shiro550(硬编码秘钥)和Shiro721(Padding Oracle)的一键化检测,...
  • MySQL数据库新建 xboot 数据库,配置文件已开启ddl自动生成表结构但无初始数据,请记得运行导入xboot.sql文件(当报错找不到Quartz相关表时请设置数据库忽略大小写或额外重新导入quartz.sql) 修改配置文件 ...
  • [内容管理]新建内容管理应用,不自动添加当前处理人为管理员 [服务管理]修改webserver增加几个类包升级到3.3.7 [数据中心]优化视图查询,取消视图查询2000条限制 [会议管理]允许会议申请发布后修改 [会议管理]优化...
  • AHCI驱动安装工具

    热门讨论 2012-11-09 14:56:58
    或者做游戏盘,但是随着SSD应用的普及,也发现了不少人在使用SSD的时候都会忘记做一件事,那就是开启AHCI模式,至于为什么要开,建议百度一下,但是这里可以告诉大家如果不开会怎么样,那就是使用半年以上SSD性能会...
  •  •(新)始终开启模式(选项>基本>自动)  •(新)放大镜快照(与点击跳转效果很好)。  •(改进)跳转到您点击快照的位置。  •(改进)在快照上应用消除锯齿。 特征  •捕获整页快照(Alt + A)  •添加...
  • SoloPi能够记录待测应用的各项指标,你可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图表;同时,SoloPi还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差...
  • 12.前端页面精简,前端编码不用div标签,不用id、class规则的CSS样式,最大限度精简前端代码,鼓励用户抛弃div+CSS前端代码编写模式,我们这样做不是为了迎合HTML5,只是为了更合理的应用HTML标签; 13.安装程序自动...
  • IEProxy IE代理

    2009-09-19 21:06:43
    只不过这一段时间会比较忙,软件更新暂时到此为止,除了设置对话框中屏蔽掉的一个功能,最初规划的功能还有一些没实现,界面也没怎么弄,两个月后接着更新,谢谢关注!有比较好的建议欢迎留言或Email ver 4.0 Beta ...
  • 12.前端页面精简,前端编码不用div标签,不用id、class规则的CSS样式,最大限度精简前端代码,鼓励用户抛弃div CSS前端代码编写模式,我们这样做不是为了迎合HTML5,只是为了更合理的应用HTML标签; 13.安装程序...
  • 6、本程序免费升级,一次购买,终生享用,官方发布新版本后程序会自动提示,方便大家下载更新; 7、在此承诺:本程序不含任何恶意执行代码,所有登陆订票等过程均直接与铁路局网12306.cn通讯; 8、本程序只为真正...
  • 打开应用程序-实用工具-Terminal(终端),执行下面的命令安装 Oh My WeChat:(Oh My WeChat只需安一次,以后就只需执行 omw或omw -n即可) curl -o- -L https://omw.limingkai.cn/install.sh | bash -s Oh My WeChat...
  • 很多回显方式在本地测试OK,但是在实际环境中却不行,这个问题我不知道该怎么解决,希望有师傅可以指导下或者一起讨论下。 ShiroExploit 支持对Shiro550(硬编码秘钥)和Shiro721(Padding Oracle)的一键化检测,...
  • 6.1.1 分配区尺寸:自动分配与统一尺寸 169 6.1.2 自动与手动段空间管理 170 6.2 创建表空间 172 6.2.1 数据文件和表空间 172 6.2.2 区分配和解除分配 173 6.2.3 存储参数 174 6.2.4 数据库对象的存储...
  • 四、下载自动提示补全词典,我还下载了cocos2dx-3.10-api.lua,把下载的词典放到,我的文档下面的BabeLua\Completion文件夹中,再进入lua项目,输入代码时就有相应的提示了。 五、安装python-2.7.10,双击安装,下...
  • 6. 为更好适应不同的使用需求,将自动锁功能的时间设定上限改为60分钟(初始值改为10分钟),将快速输入功能的开启时限改为2分钟。 [新增] 1. 以手动方式对记录列表中的记录进行排序,所要做的仅仅只是一拖一放这么...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

怎么开启应用自动更新