怎么才能让应用有卸载更新?

你是否遇到过这样的情况:

明明一天没怎么用手机,但是一查话费却发现流量用了很多。

这很可能是你的手机里有App在偷流量。那么,到底是谁在偷呢?其实,你可能忽视了那些买手机时自带的一些App,也就是“预装软件”,而且有些预装软件还不能删除。

终于,从7月1日起,大家不会再遭到预装软件的困扰了。

工信部:手机厂商不得擅自安装软件

2016年12月,工信部印发了《移动智能终端应用软件预置和分发管理暂行规定》,要求今年从7月1日起:

生产企业应在终端产品说明书中提供预置软件列表信息,并在终端产品说明书或外包装中,标示预置软件详细信息的查询方法。

移动智能终端生产企业应约束销售渠道,未经用户同意不得擅自在移动智能终端中安装应用软件,并提示用户终端在销售渠道等环节被装入应用软件的可能性、风险和应对措施。

生产企业和互联网信息服务提供者应确保除基本功能软件外的移动智能终端应用软件可卸载。

生产企业应确保已被卸载的预置软件在移动智能终端操作系统升级时不被强行恢复;应保证移动智能终端获得进网许可证前后预置软件的一致性。

那么,大家可能会问,工信部的规定是从7月1日起实施,那上个月新买的手机能卸载预装软件吗?去年买的手机能卸载预装软件吗?

理论上,解决方式非常简单,把旧手机升级到新系统就能卸载了,不过,具体就要看各家手机厂商规则。

小编在自己去年买的iPhone上发现,在目前最新的系统下,除了电话、相机、设置等必须软件之外,其他预装软件都可以删除。

所以,你需要尽快升级你手机的系统,把那些你不想要的预装软件统统卸载掉吧!

预装软件让人头疼:不止偷流量那么简单

明明自己就只想买一部手机,需要什么软件,自己到应用商店下载安装即可,可手机厂商非得硬塞给消费者一堆的软件,还不让卸载。

这恐怕是很多人买智能手机时面临的烦恼。工信部之所以要对智能手机预装软件下重手,这和预装软件长期以来的一些问题有关:占用手机有限的内存和运行速度、偷流量、还有安全隐患。

据山西日报报道,在某私企工作的白领刘女士抱怨道:“这是我刚买的手机,里面提前预装的软件就有40多款,包括视频播放器、炒股软件、手游等等。它们不仅占据了大量储存空间,而且绝大部分都不是我需要的。在我试图卸载这些软件时,还会收到‘卸载会影响手机运行’的警告,用户体验特别差。”

记者在采访中发现,“偷流量”、“偷话费”现象在智能手机使用人群中屡见不鲜。“从当初非智能手机每个月30M流量用不完,到现在每个月1GB流量不够用,手机流量消耗成了每个月主要的话费支出。”

晋中市民李旭娇女士表示,她每天都会密切关注自己的流量用了多少,还剩多少?最让她不解的是,自己平常除了刷微信和微博,不看视频不追剧的她根本不知道是哪款软件张开了吸取流量的“血盆大口”。

据央视新闻此前报道,北京一家手机安全检测机构就曾发现,一款水货手机里的软件暗中操作手机自动发送短信、推送广告,给手机用户带来了资费和隐私的双重损失。手机软件工程表示,他的目的就是通过广告来赚取相关的利益,然后通过软件的不断更新去控制手机用户成为“肉鸡”。

为什么有预装软件?50亿的生意谁不眼红!

为什么手机厂商在生产手机时,要预装这些软件呢?

据法制晚报报道,北京3G产业联盟副理事长、秘书长,资深互联网专家项立刚介绍,按照中国每年5亿部智能手机的出货量计算,预装软件的经济规模应该超过50亿元,各大厂商、运营商肯定不愿意放弃这块“蛋糕”。

“其实现在手机毛利率很低,一台手机的毛利润最低可能就几十块钱,都是亏钱的。”深圳一家硬件厂商副总经理刘先生告诉《南方都市报》记者,反过来,互联网公司现在资本比较雄厚,所以对预装补贴高。“很多山寨机其实是靠预装App赚钱的。”

“而到了厂商端,一般来说,预装分为出厂预装跟水货刷机预装,APP开发商需要加入地域性网盟组织,与厂商或渠道商进行谈判,厂商会以分公司形式参与。出厂预装的,CPS厂商收取1-2元,渠道商收取2-3块钱。刷机就再贵一点。”深圳一家硬件厂商负责人说。

把不需要的预装软件卸掉吧!

本文来源:经济日报(ID:jjrbwx)

综合中国新闻网、法制晚报、山西日报等

}

应用层: Java应用开发工程师开发的所有应用程序比如地图,浏览器,QQ等属于该层,手机中的短信,拨号,浏览器等这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化
应用框架层:Java framework层源码OS定制开发为应用层开发人员提供API
Linux内核层:Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核

区别二:dvm是基于寄存器的虚拟机而jvm执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备。
区别三:.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作,提高了类的查找速度

133. C/S和B/S两种架构的概念、区别和联系

C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。
C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。
2.1 C/S架构的界面和操作可以很丰富。
2.2 安全性能可以很容易保证,实现多层认证也不难。
2.3 由于只有一层交互,因此响应速度较快。
2.4 适用面窄,通常用于局域网中。
2.5 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
2.6 维护成本高,发生一次升级,则所有客户端的程序都需要改变。
B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。
B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。
1)客户端无需安装,有Web浏览器即可。
2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
3)BS架构无需升级多个客户端,升级服务器即可。
1)在跨浏览器上,BS架构不尽如人意。
2)表现要达到CS程序的程度需要花费不少精力。
3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。
4)客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

  物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
  通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,
  三者从本质上来说没有可比性,
  socket则是对TCP/IP协议的封装和应用(程序员层面上)。
  也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,
  而HTTP是应用层协议,主要解决如何包装数据。
  关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:
  “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。
  如果想要使传输的数据有意义,则必须使用到应用层协议。
  应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。
  WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
  而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。
  通过Socket,我们才能使用TCP/IP协议。
  实际上,Socket跟TCP/IP协议没有必然的联系。
  Socket编程接口在设计的时候,就希望也能适应其他的网络协议。
  所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,
  网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:
  “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。
  这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,
  TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”
  关于TCP/IP协议的相关只是,用博大精深来讲我想也不为过,单单查一下网上关于此类只是的资料和书籍文献的数量就知道,
  这个我打算会买一些经典的书籍(比如《TCP/IP详解:卷一、卷二、卷三》)进行学习,今天就先总结一些基于基于TCP/IP协议的应用和编程接口的知识,也就是刚才说了很多的HTTP和Socket。
  CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
  实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。
  下面是一些经常在笔试或者面试中碰到的重要的概念,特在此做摘抄和总结。
  一、什么是TCP连接的三次握手
  第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
  理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
  断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
  二、利用Socket建立网络连接的步骤
  建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
  套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
  1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
  2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
  为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
  3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。
  而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
  三、HTTP链接的特点
  HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
  HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
  四、TCP和UDP的区别(考得最多。。快被考烂了我觉得- -)
  1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;
  而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
  2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。
  知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,
  因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,
  即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

HTTP只负责把数据传送过去,不会管这个数据是XML、HTML、图片、文本文件或者别的什么。而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等,怎么能够混为一谈。
HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等。。。。
SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。
Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。
webService协议主要包括两个方面:传输协议和数据表示,关于传输协议可以是http或其他,数据表示也可以是键值对、xml或其他,只不过现在通用的是http+soap,当然其他的也可以,不知道这样理解对不对?
SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

137. 使用多线程和双缓冲

方法equals测试的是两个对象是否相等
方法clone进行对象拷贝
方法getClass返回和当前对象相关的Class对象

强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM 也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象
软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。
弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象
虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。

140. 若Activity已经销毁,此时AsynTask执行完并且返回结果,会报异常吗?

执行相应地任务,因为线程池的大小问题,所以 AsyncTask 只应该用来执行耗时时间较短的任务,
比如 HTTP 请求,大规模的下载和数据库的更改不适用于 AsyncTask,因为会导致线程池堵塞,没有
线程来执行其他的任务,导致的情形是会发生 AsyncTask 根本执行不了的问题。

145. 如何实现文件断点上传

大文件,这里介绍一种通过 Socket 方式来进行断点续传的方式,服务端会记录下文件的上传进度,
当某一次上传过程意外终止后,下一次可以继续上传,这里用到的其实还是 J2SE 里的知识。
这个上传程序的原理是:客户端第一次上传时向服务端发送

Fragment 是 android3.0 以后引入的的概念,做局部内容更新更方便,原来为了到达这一点要把多个布局放到一个 activity 里面,现在可以用多 Fragment 来代替,只有在需要的时候才加载Fragment,提高性能。

149. ListView卡顿的原因与性能优化,越多越好

重用converView: 通过复用converview来减少不必要的view的创建,另外Infalte操作会把xml文件实例化成相应的View实例,属于IO操作,是耗时操作。
避免在 getView 方法中做耗时的操作: 例如加载本地 Image 需要载入内存以及解析 Bitmap ,都是比较耗时的操作,如果用户快速滑动listview,会因为getview逻辑过于复杂耗时而造成滑动卡顿现象。用户滑动时候不要加载图片,待滑动完成再加载,可以使用这个第三方库glide
Item的布局层次结构尽量简单,避免布局太深或者不必要的重绘
在一些场景中,ScollView内会包含多个ListView,可以把listview的高度写死固定下来。 由于ScollView在快速滑动过程中需要大量计算每一个listview的高度,阻塞了UI线程导致卡顿现象出现,如果我们每一个item的高度都是均匀的,可以通过计算把listview的高度确定下来,避免卡顿现象出现
使用 RecycleView 代替listview: 每个item内容的变动,listview都需要去调用notifyDataSetChanged来更新全部的item,太浪费性能了。RecycleView可以实现当个item的局部刷新,并且引入了增加和删除的动态效果,在性能上和定制上都有很大的改善
ListView 中元素避免半透明: 半透明绘制需要大量乘法计算,在滑动时不停重绘会造成大量的计算,在比较差的机子上会比较卡。 在设计上能不半透明就不不半透明。实在要弄就把在滑动的时候把半透明设置成不透明,滑动完再重新设置成半透明。
尽量开启硬件加速: 硬件加速提升巨大,避免使用一些不支持的函数导致含泪关闭某个地方的硬件加速。当然这一条不只是对 ListView。

150. 三级缓存的原理

从本地文件中加载(数据库,SD)
滑动的时候出现的图片错位等现象。(16M)
b. 支持加载网络图片和本地图片。
c. 内存管理使用的 lru 算法(移除里面是有频率最少的对象),更好的管理 bitmap 的内存

安装过程:复制apk安装包到data/app目录下,解压并扫描安装包,把dex文件(dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。

}

有时候我们会面临这种情况:拿到了一台崭新的手机,或是刚刚重新安装完系统,打开 App Store,搜索一个你曾使用了很久的得力应用,结果发现哪里都不得其踪迹,一阵困惑之后你猛然意识到:这个应用已经被下架了。

那么有没有什么办法可以安装已经从 App Store 下架的应用呢?一款应用被下架的原因有很多,重新安装他们的方法也各不相同。如果你需要的应用不幸被下架了,不妨尝试一下以下几种思路,兴许能帮你找回失联的应用。

如果你在 App Store 中百般更换搜索关键字都找不到你曾下载无数次的 App,那么它很有可能已经被下架。

搜索 Yep 并不能得偿所愿

此时的首选应当是到自己的「已购项目」,尝试搜索一下应用的名字,你也许能看到熟悉的图标和下载按钮。

因为有些开发者虽然已将应用从 App Store 中下架,但是依然为已购买应用的用户提供下载。所以当你的应用在 App Store 中消失时,不妨先到自己的已购中寻找一下,若是开发者没有把它完全下架,你依然可以将其重新下载,继续使用。

然而并不是所有的下架应用都可以这么找回。有些已下架应用即便出现在了你的已购项目中,但下载按钮却是灰色的,这种现象往往是由于应用被下架的年月有些久远,作者不再提供更新,所以应用无法适配新系统而导致的。

由于一些不可抗力因素,有些应用只会在某些特定区域下架,但依然会在别的国家的 App Store 提供正常的下载和更新服务。在 iOS 11 之前,我们要找回这类被下架的应用,我们可以注册一个新国家地区的 Apple ID,或是改变自己 Apple ID 的国家地区来重新购买,下载或更新被下架的应用。但是如果你的手机里还安装着其他区或已经在本区下架的应用,并且想要对这个应用进行不换区的更新,利用 iOS 11 提供的新的功能「卸载应用」便可以做到。

有别于「删除应用」的直接删除该应用以及所有相关数据,「卸载应用」只会删除应用本身,但保留该应用的相关数据。该功能的设计的本意是为了当 iOS 设备储存空间过小时,系统能在不破坏用户数据的前提下,自动删除一些不常用的应用来节省空间。被卸载应用的图标并不会消失而是会变成灰色,点击其图标,该应用就会被自动下载并更新为最新版。正是利用这一特性,我们可以通过卸载在本区已下架的应用,再将其重新安装而不跨区的更新为最新版。

不过需要注意的是这个方法虽然方便,但也有其风险,我派曾有过详细的教程进行说明,想更新符合这类下架情况应用的读者可以参考这个教程:

但如果我想下载的应用在本区已经下架,而且我还想在一个新的 iOS 设备上安装已下架应用,该怎么办?这时我们可以借助 iMazing()对在本区购买过但已下架的应用进行下载安装。

iMazing 虽为收费软件,但其免费版的功能已经完全能帮助我们达到目的。打开 iMazing,插上我们要安装下架应用的设备,点击「应用程序」进入应用界面,点击页面最下方的「管理应用程序」进入应用安装界面。

点击下载图标,会弹出一个窗口要求我们输入购买该应用时使用过的 Apple ID,需要注意的是该账号必须购买过该应用才可以成功下载,点击登录并验证过后,iMazing 就会开始下载应用。

下载完成后 Spotify 就会出现在你的资料库中,点击「安装至设备」即可完成设备端的安装。

该方法不仅对已下架的应用有效,也可以用来在 iOS 设备上不切换账号的条件下安装其他地区 Apple ID 上的已购应用。

如果上述方法都没能帮到你,那么你可以考虑注册一个新的其他地区的 Apple ID 来购买,下载和更新在本区已下架的应用,具体可以参照我派教程:

或是考虑彻底在 iTunes 里更换自己当前 Apple ID 的地区到其他地区,需要注意的是美国等一些区域转区时需要使用当地的支付方式进行验证,所以读者进行转区操作时可以选择加拿大这类不需要验证付款方式的区域,支付方式设置为 None,进行下载更新。如果不嫌麻烦的话,你还可以在下载安装完之后转回到原来的区域。

若是读者选择了对自己的 Apple ID 账号进行转区操作,账号需要满足以下几点条件:

在转区过程中遇到以上或其他任何问题,联系 Apple 客服总是最好的选择,主动联系他们说明自己遇到的问题,他们会很乐意帮助你解决。

出于各种原因,有些应用从 App Store 下架后,开发者会通过 TestFlight 测试平台来分发自己的程序,以供用户继续更新和使用。如果你关心的下架应用开发者正在这么做,那么时刻留意其 TestFlight 名额注册的动向,或是主动向开发者提出参与测试的请求就显得尤为必要了。

一个应用被下架的原因往往有很多,也很复杂,在其背后的各类纷争之外,作为用户的我们只是想简单的享受各类应用给我们带来的便利,本篇教程也许并不能帮你成功找回已经逝去的应用,但至少作为参考,能给追求效率的我们提供通往效率的不同道路。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击。

}

我要回帖

更多关于 怎么查找卸载过的软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信