天道酬勤,学无止境

如何打开并检查 Play Protect 是启用还是禁用(How to open and check whether Play Protect is enabled or disabled)

问题
    minSdkVersion 18
    targetSdkVersion 27

使用以下代码,我可以打开Google 设置页面。

private static final String GOOGLE_SETTINGS_COMPONENT = "com.google.android.gms";
private static final String GOOGLE_SETTINGS_ACTIVITY = ".app.settings.GoogleSettingsActivity";
Intent i = new Intent();
i.setClassName(GOOGLE_SETTINGS_COMPONENT,GOOGLE_SETTINGS_COMPONENT + GOOGLE_SETTINGS_ACTIVITY);
try {
      startActivity(i);
} catch (android.content.ActivityNotFoundException ex) {
      Toast.makeText(getApplicationContext(), "Activity Not Found", Toast.LENGTH_LONG).show();
 }
  1. 是否可以直接打开Google 设置-->安全--> Google Play 保护页面。
  2. 如何检查扫描设备是否存在安全威胁选项是启用还是禁用?
回答1

1) 是否可以直接打开 Google 设置 --> 安全 --> Google Play 保护页面?

您可以使用com.google.android.gms.security.settings.VerifyAppsSettingsActivity意图直接启动播放保护屏幕,如下所示。

val intent = Intent()
intent.setComponent(ComponentName("com.google.android.gms", "com.google.android.gms.security.settings.VerifyAppsSettingsActivity"))
startActivity(intent)

这是 Playstore APK 的元数据,您可以看到所有可用的活动。

2) 如何检查扫描设备是否存在安全威胁选项是启用还是禁用?

开发人员可以从 SafetyNet 验证应用程序 API 获得对用户设备上已安装应用程序环境的类似安全见解。 这套新的 API 可让开发人员确定用户的设备是否受 Google Play Protect 保护,鼓励尚未使用 Google Play Protect 的用户启用它,并识别设备上安装的任何已知的潜在有害应用 (PHA)。

这些 API 对于可能会受到与其应用程序在同一设备上安装的 PHA 影响的应用程序的开发人员特别有用。 使用 isVerifyAppsEnabled() 确定 Google Play Protect 已启用可为开发人员提供额外的保证,即设备更有可能是干净的。 如果设备未启用 Google Play Protect,开发人员可以使用 enableVerifyApps() 请求用户启用 Google Play Protect。 启用 Google Play Protect 后,开发人员可以使用 listHarmfulApps() 方法来确定用户设备上是否安装了任何可能有害的应用程序。 这个易于使用的功能套件不需要 API 密钥和请求配额。

编译com.google.android.gms:play-services-safetynet:11.6.0并使用以下代码。

确定是否启用应用验证

SafetyNet.getClient(this)
    .isVerifyAppsEnabled()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.");
                } else {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

请求启用应用验证

SafetyNet.getClient(this)
    .enableVerifyApps()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The user gave consent " +
                          "to enable the Verify Apps feature.");
                } else {
                    Log.d("MY_APP_TAG", "The user didn't give consent " +
                          "to enable the Verify Apps feature.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

为了获得更好的保护,开发人员应将证明 API 与新的验证应用 API 一起使用。 首先使用证明 API 来确定设备尚未从已知状态修改。 一旦可以信任 Android 系统,验证应用 API 的结果就可以信任。

PS 在使用 API 之前通读附加 TOS

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 你如何提示用户更新谷歌播放服务?(How do you prompt the user to update google play services?)
    问题 我可以轻松检测到我设备的 google play 服务应用程序需要更新,并显示 getErrorDialogFragment() 以提示用户更新它: GoogleApiAvailability googleApi = GoogleApiAvailability.getInstance(); mServiceAvailabilityCode = googleApi.isGooglePlayServicesAvailable(this); if (mServiceAvailabilityCode == ConnectionResult.SUCCESS) { ... else { if (googleApi.isUserResolvableError(mServiceAvailabilityCode)) { switch (mServiceAvailabilityCode) { .... case SERVICE_VERSION_UPDATE_REQUIRED: googleApi.showErrorDialogFragment(SplashActivity.this, mServiceAvailabilityCode, PLAY_SERVICES_RESOLUTION_REQUEST); break; .... } 但是,如果 Google Play 服务被禁用且已过期,那么
  • 在C ++中激活RTTI(activate RTTI in c++)
    问题 有人可以告诉我在UNIX上工作时如何在c ++中激活RTTI。 我听说可以禁用和启用它。 在我的Unix环境中,如何检查RTTI是启用还是禁用? 我在HPUX上使用aCC编译器。 回答1 您使用的是g++还是其他编译器? 在g++ ,默认情况下IIRC启用了RTTI,您可以使用-fno-rtti禁用它。 要测试它是否处于活动状态,请使用dynamic_cast或typeid 更新 我相信默认情况下,HPUX的aCC / aC++也具有RTTI,并且我不知道禁用它的方法。 检查您的手册页。 回答2 gcc默认情况下启用它。 检查typeid(foo).name()是否为您提供了有用的信息。 #include <iostream> #include <typeinfo> int main() { std::cout << typeid(int).name() << std::endl; return 0; } 没有RTTI,您会得到类似以下内容的信息: foo.cpp:6: error: cannot use typeid with -fno-rtti 回答3 根据文档,没有选择将其关闭。 可以有选择地禁用的标准C ++的仅有两位是“ for循环中的变量范围”( -Wc,ansi_for_scope,off )和依赖于参数的名称查找( -Wc,-koenig_lookup,off
  • 当应用程序在调试时运行时,如何禁用Firebase崩溃报告?(How to disable Firebase Crash Reporting when the app is running on debug?)
    问题 我已经成功实现了Firebase Crash Reporting,但是我需要在应用程序运行时禁用该服务,并撤消'debug'Build Variant,以避免开发过程中控制台发生非真实的崩溃。 官方文档对此没有任何说明。 回答1 更新:使用Google Play服务/ Firebase 11+,您现在可以在运行时禁用崩溃报告。 FirebaseCrash.setCrashCollectionEnabled() (感谢@Tyler Carberry) 旧答案: 只要社区能够推测,就没有官方的支持。 我建议执行此操作的最佳方法是,在仪表板上设置多个Firebase应用程序,每种构建类型一个,并根据构建版本设置多个指向每个不同应用程序的google_services.json文件。 回答2 使用Google Play服务11.0,您现在可以在运行时禁用崩溃报告。 FirebaseCrash.setCrashCollectionEnabled(!BuildConfig.DEBUG); 回答3 最近引入了以官方方式禁用Firebase崩溃报告的可能性。 您需要将Firebase android sdk升级到至少11.0.0版本 为此,您需要编辑AndroidManifest.xml并添加: <meta-data android:name="firebase_crashlytics
  • 如何检查自动提交是否打开 postgres 的 psql(How to check if autocommit is on or not postgres' psql)
    问题 我正在使用 postgres 9.5。 如何检查自动提交是打开还是关闭? 我尝试了SHOW AUTOCOMMIT ,我得到了ERROR: unrecognized configuration parameter "autocommit"然后我做了一个\set autocommit off然后SHOW AUTOCOMMIT给了我空白输出。 如何确定自动提交是打开还是关闭? 我也可以在我的 sql 文件中创建数据库时/之后将其设置为关闭吗? 回答1 根据达斯汀马克思的这篇文章,您可以使用: \echo :AUTOCOMMIT 如果希望“始终”禁用自动提交,可以将 \set AUTOCOMMIT off 元命令添加到本地 ~/.psqlrc 文件中。 对于更全局的设置,可以将此元命令放置在数据库系统配置目录(可以使用 PostgreSQL 操作系统级命令 pg_config --sysconfdir 定位)的 apsqlrc 文件中。 回答2 一种快速而肮脏的方法是只执行提交; 并查找以下消息以推断自动提交是否开启。 错误报告 - SQL 错误:启用自动提交时无法提交。 注意:我使用 SQL developer 所以不确定其他 IDE
  • 无法启动Genymotion虚拟设备-仅Virtualbox Host Host以太网适配器无法启动(Unable to start Genymotion Virtual Device - Virtualbox Host Only Ethernet Adapter Failed to start)
    问题 我正在Windows 8 Pro上使用Genymotion v13.0成功创建虚拟设备,但是当我尝试运行它时,出现此错误: Unable to start Genymotion Virtual Device. 截屏: 尝试通过Virtualbox运行它时,出现以下错误消息: Virtualbox Host Only Ethernet Adapter Failed to start 截屏: 在出现此问题之前,虚拟设备以前可能运行良好。 有人可以告诉我如何解决吗? 回答1 使用GenyMotion 2.0.3和VirtualBox 4.3.6对我有用。 我的问题是我有一个由Vagrant使用的现有的仅主机适配器。 我不能简单地删除它,它会破坏我的Vagrant VM。 在Virtual Box全局设置中创建一个新的仅主机适配器。 给它一个与任何现有的仅主机适配器相同的地址空间。 例如,我将我的设置如下,其中还有一个使用192.168.56.x的vboxnet0(由Vagrant使用) 名称: vboxnet1 IPV4地址: 192.168.57.1 遮罩: 255.255.255.0 DHCP: 地址192.168.57.100掩码: 255.255.255.0下限: 192.168.57.101高上限: 192.168.57.254 然后,编辑您现有的GenyMotion
  • “找不到网络路径”的解决方法及排错步骤
    症状: 通过\\ip或\\<计算机名>访问任何计算机时都会出现“找不到网络路径”的错误提示,无法正常访问网络资源,但可以访问外部网页。 最终解决方法: 运行netsh interface ip reset c:\log.txt命令重置tcp/ip各组件到初始状态,重启电脑后解决问题。 问题解决步骤: 1、检查物理连接:因症状描述访问外部网页时没问题,所以此步可略过。 2、Ping 127.0.0.1回环地址正常,说明tcp/ip协议的安装(基本状态)没问题。 3、 ping 对方计算机名和ip地址都正常(其中有用大数据包来ping),没有丢包,说明计算机的基本连接(包括网卡本身和计算机之间的连接)和网络名称解析没问题。物理层到网络层都是没问题的,应用层协议出现了问题。 4、 检查网络设置:检查在TCP/IP协议上是否捆绑了NETBIOS(在TCP/IP协议属性—高级—WINS—选择启用TCP/IP上的NETBIOS);检查是否已经安装“Microsoft的文件和打印服务”组件,其它计算机也都必须启用“文件和打印共享”,并检查是否安装了Microsoft网络客户端。此项检查正常。 5、检查是否启动了“computer browser”的计算机浏览器服务,WIN2K/XP要确保计算机浏览服务正常启动,保证其能参与网络浏览选举和主机宣告。打开计算机管理->服务和应用程序->服务,查看
  • 如何禁用Pylint警告?(How do I disable a Pylint warning?)
    问题 我正在尝试在Pylint 0.21.1中禁用警告C0321(“在一行上有多个语句”-我经常在单行中包含短单行结果的if语句)(如果重要:astng 0.20 .1,通用0.50.3和Python 2.6.6(r266:84292,2010年9月15日,16:22:56)。 我尝试在disable=C0321配置文件中添加disable=C0321 ,但是disable=C0321坚持要报告它。 该行的变化(例如disable=0321或disable=C321 )被标记为错误,因此Pylint确实能够正确识别该选项。 它只是忽略它。 这是Pylint的错误,还是我做错了什么? 有没有解决的办法? 我真的很想摆脱一些杂音。 回答1 pylint --generate-rcfile如下所示: [MESSAGES CONTROL] # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time. #enable= # Disable the message, report, category or
  • 停用Chrome中弹出的开发人员模式扩展(Disable developer mode extensions pop up in Chrome)
    问题 自上周最新版的chrome(34.0.1847.116)起,使用watir-webdriver运行自动化测试时,我一直收到“禁用开发人员模式扩展名”。 这似乎是令人反感的扩展名,但鉴于chromedriver使用的扩展名,对我来说这没有潜在的危险。 任何已找到此修复程序的人,因为我无法回滚到以前的版本,或者找不到要回滚到的旧版本的安装程序,这对我的测试造成了破坏。 回答1 禁用弹出窗口的官方方法是: 打包您的扩展程序:转到chrome://extensions ,检查开发人员模式,然后点击打包扩展程序通过将.crx文件拖放到chrome://extensions页面中来安装扩展chrome://extensions 。 如果您此时尝试重新启动Chrome,则会弹出“不支持的扩展程序已禁用”对话框。 然后对于Windows 7或Windows 8: 在此处下载Chrome组策略模板将[zip]\windows\admx\chrome.admx到c:\windows\policydefinitions 将[zip]\windows\admx\[yourlanguage]\chrome.adml到c:\windows\policydefinitions\[yourlanguage]\chrome.adml (不是c:\windows\[yourlanguage] )
  • 如何在 Phoenix 框架中选择性地禁用 CSRF 检查(How to selectively disable CSRF check in Phoenix framework)
    问题 我正在尝试创建一个指向我网站的 Facebook 页面选项卡。 Facebook 向我网站的 url 发送 HTTP POST 请求。 这里的问题是服务器有一个内置的CSRF检查,它返回以下错误: (Plug.CSRFProtection.InvalidCSRFTokenError) invalid CSRF (Cross Site Forgery Protection) token, make sure all requests include a '_csrf_token' param or an 'x-csrf-token' header` 服务器需要 Facebook 没有的 CSRF 令牌。 所以,我想有选择地禁用路径 www.mywebsite.com/facebook 的 CSRF。 我怎样才能在凤凰框架中做到这一点? 回答1 Plug.CSRFProtection在您的路由器中通过protect_from_forgery启用。 默认情况下,这是在browser管道中设置的。 一旦添加了插件,就无法禁用它,而必须首先不设置它。 您可以通过将其移出browser并仅在需要时包含它来实现此目的。 defmodule Foo.Router do use Foo.Web, :router pipeline :browser do plug :accepts, [
  • 如何在命令行中检查给定文件或目录是否被锁定(由任何进程使用)?(How to check in command-line if a given file or directory is locked (used by any process)?)
    问题 我需要知道在尝试对此类文件进行任何操作之前。 回答1 不确定锁定的目录(Windows有吗?) 但是,检测文件是否正在被另一个进程写入并不困难。 @echo off 2>nul ( >>test.txt echo off ) && (echo file is not locked) || (echo file is locked) 我从另一个窗口使用以下测试脚本在文件上放置了锁。 ( >&2 pause ) >> test.txt 当我从一个窗口运行第二个脚本,然后从第二个窗口运行第一个脚本时,我收到了“锁定”消息。 在第一个窗口中按<Enter> ,如果重新运行第一个脚本,则会收到“解锁”消息。 解释 每当命令的输出重定向到文件时,当然都必须打开该文件以进行写访问。 Windows CMD会话将尝试打开文件,即使该命令未产生任何输出。 >>重定向操作符以追加模式打开文件。 因此, >>test.txt echo off将尝试打开文件,它不向文件写入任何内容(假设echo已关闭),然后关闭文件。 该文件未进行任何修改。 大多数进程在打开文件进行写访问时都会锁定文件。 (有些OS系统调用允许打开文件以共享模式进行写入,但这不是默认设置)。 因此,如果另一个进程已经锁定了“ test.txt”以进行写入,则重定向将失败,并向stderr发送以下错误消息- “该进程无法访问该文件
  • 如何检查NumLock是否已启用(How to check if NumLock is enabled)
    问题 最近我遇到了一个问题,笔记本电脑在某些时候(例如退出睡眠模式时)自动禁用了 NumLock。 这促使我寻找以编程方式检查 NumLock 是否关闭的方法,如果是,则将其打开。 我正在寻找实现这一目标的最佳方法。 我想在发生某些事件时运行脚本,例如登录笔记本电脑时。 我计划通过计划任务执行此操作,我更喜欢使用 PowerShell 而不是 VBScript,但我很乐意使用任何有效的方法。 回答1 在 PowerShell 中, [console]::NumberLock是一个只读属性,如果启用了 NumLock,它将评估为 true。 我最终编写的脚本如下: if(-not [console]::NumberLock){ $w = New-Object -ComObject WScript.Shell; $w.SendKeys('{NUMLOCK}'); } 回答2 基于上述 Thriggle 的回答,您可以通过添加循环来确保 NumLock 永远不会被关闭。 请注意,这对 CPU 来说非常困难: While($true){ if(-not [console]::NumberLock){ $w = New-Object -ComObject WScript.Shell; $w.SendKeys('{NUMLOCK}'); } }
  • 如何检查 nginx gzip_static 模块是否正常工作?(How can I check that the nginx gzip_static module is working?)
    问题 如何检查 nginx 是否提供静态文件的 .gz 版本(如果存在)? 我用 gzip 静态模块编译了 nginx,但我没有看到任何提及在我的日志中提供的 .gz 版本。 (我已经将 global.js 和 global.css 文件与它们的 .gz 版本缩小到同一目录中)。 nginx.conf 的相关部分如下所示: gzip on; gzip_static on; gzip_http_version 1.0; gzip_disable "MSIE [1-6]\."; gzip_vary on; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 任何指针将不胜感激。 回答1 使用strace。 首先需要检测nginx进程的PID: # ps ax | grep nginx 25043 ? Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 25044 ? S 0:02 nginx: worker process
  • 如何确定iPhone用户当前是否已设置密码并启用了加密功能?(How can I find out if the iPhone user currently has a passcode set and encryption enabled?)
    问题 我正在编写一个需要对其数据进行加密的iPhone应用程序。 我已经学习了如何通过设置NSFileProtectionComplete属性来打开文件加密。 我也知道如何检查iPhone版本,以确保它们运行的​​是iOS 4.0或更高版本。 不过,我已经意识到,如果用户没有选择密码并且没有在“设置”>“常规”>“密码锁定”屏幕上专门启用数据保护,那么实际上根本就不会保护数据。 我想弹出警告并告诉用户,他们必须启用密码并打开数据保护(这需要在4台iPhone之前进行备份和还原),然后在没有密码的情况下退出应用程序并启用了数据保护。 我仍然无法弄清楚这些设置的状态。 如果禁用了数据保护,我发现的所有API(例如UIApplication中的“ protectedDataAvailable”)都将成功通过。 回答1 免责声明:此答案在ios 4.3.3之前有效。 如果打开了数据保护,则默认情况下,新创建的文件的NSFileProtectionKey为nil 。 如果数据保护已关闭,则默认情况下,新创建的文件将具有NSFileProtectionNone NSFileProtectionKey 。 因此,您可以使用以下代码检测文件保护的存在: NSString *tmpDirectoryPath = [NSHomeDirectory()
  • 在用户拒绝使用位置服务后,如何提示用户打开位置服务(How can I prompt the user to turn on location services after user has denied their use)
    问题 我有一个具有显式用户交互的应用程序,该应用程序利用了用户的当前位置。 如果用户拒绝访问位置服务,我仍然希望随后的使用提示用户进入设置并为我的应用重新启用位置服务。 我想要的行为是内置Maps应用的行为: 在设置>常规>重置>重置位置警告中重置位置警告。 启动地图应用。 点击左下角的当前位置按钮。 具有““地图”的地图提示将要使用您的当前位置“ | “不允许” | “允许”。 选择“不允许”选项。 再次点击左下角的“当前位置”按钮。 地图提示“打开位置服务以允许“地图”确定您的位置” | “设置” | “取消”。 在我自己的应用程序中,相同的基本流程导致我的CLLocationManagerDelegate -locationManager:didFailWithError:方法在最后一步被调用,并带有kCLErrorDenied错误,并且无法为用户提供打开“设置”应用程序进行更正的选项。 我可以显示我自己的警报来响应该错误,但是它无法像操作系统内置的Maps应用所使用的警报那样启动“设置”应用。 我缺少的CLLocationManager类中有什么能够给我这种​​行为的吗? 回答1 使用iOS8,您最终可以通过openURL将用户链接到“设置”应用。 例如,您可以使用一个按钮将用户带到“设置”应用程序来创建UIAlertView: UIAlertView *alert = [
  • 暂时关闭约束(MS SQL)(Turn off constraints temporarily (MS SQL))
    问题 我正在寻找一种暂时关闭所有数据库约束(例如表关系)的方法。 我需要将一个数据库的表复制(使用INSERT)到另一个数据库。 我知道我可以通过按正确的顺序执行命令(不破坏关系)来实现这一点。 但是,如果我可以暂时关闭检查约束并在操作完成后重新打开约束,则会更容易。 这可能吗? 回答1 您只能在SQL 2005+中禁用FK和CHECK约束。 见ALTER TABLE ALTER TABLE foo NOCHECK CONSTRAINT ALL 或者 ALTER TABLE foo NOCHECK CONSTRAINT CK_foo_column 主键和唯一约束不能被禁用,但是如果我对您的理解正确的话,这应该可以。 回答2 -- Disable the constraints on a table called tableName: ALTER TABLE tableName NOCHECK CONSTRAINT ALL -- Re-enable the constraints on a table called tableName: ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL --------------------------------------------------------- -- Disable
  • 我无法安装Intel HAXM(I can't install intel HAXM)
    问题 我安装了Android Studio,但没有任何问题。 但是,当我尝试运行仿真器时,它表示未安装英特尔HAXM。 因此,我找到了安装程序并运行它,即使它说我的笔记本电脑支持该安装程序,也未启用它。 我去启用了英特尔虚拟化技术(VT-x),但仍然收到相同的消息。 我听说有关Hyper-V的信息需要禁用,但是当我转到“打开/关闭Windows功能”时,在该列表中找不到它。 有人可以帮我弄这个吗? 回答1 好吧,所以我做了所有可能在网上找到的事情,但是没有任何效果。 因此,我去了英特尔网站,我下载了他们提供的HAXM安装程序(而不是使用通过Android Studio下载的安装程序)。 该安装程序实际上已完成安装,并已成功安装。 然后,我打开Android Studio,并最终加载了模拟器! 因此,对于其他任何有此问题的人,只需直接从英特尔网站下载安装程序即可。 这是链接: https://software.intel.com/zh-CN/android/articles/intel-hardware-accelerated-execution-manager 回答2 我认为您的问题是您认为Android SDK Manager中的安装程序实际上会安装Intel HAXM。 但是,最重要的是它不会安装它。 它的作用是提取(确实)安装英特尔HAXM所需的文件。 当我遇到相同的问题时
  • 如何在 ADB 连接期间禁用电池充电?(How to disable battery charging during ADB connection?)
    问题 问题描述:每次我在PC和手机之间连接USB线时,电池都会自动充电。 我想使用 ADB 协议,但我不想在 ADB 连接期间给电池充电。 是否可以关闭此充电? 当然,我该怎么做? 环境:Android os 4及更高版本的手机 我只需要提到我的参考设备在 android 5 上工作,所以没有 /sys/class/power_supply/battery/force_usb_charging 文件 回答1 注意: adb shell dumpsys battery unplug只模拟电池状态。 我检查了 USB 电缆上的电流指示器,这根本不会改变流动的电流量,因此电池仍在充电。 它只会改变应用程序对状态的看法,因此例如,如果您已将其配置为仅在充电时更新,则 google play 将不会开始更新...... 将/sys/devices/battery.XX/power_supply/battery/hv_charger_set之类的文件的值更改为 0 确实有效,但它对每个设备都有不同的文件。 例如,对于我的带有骁龙 805 的 yotaphone 2,有一个文件: /sys/devices/qpnp-charger-14/power_supply/battery/charging_enabled 所以你可以制作一个可以在 tasker 中使用的脚本(如果你有 root):
  • 检测到的屏幕重叠会阻止Android权限(Screen overlay detected blocks Android permissions)
    问题 我注意到新手机上的Android应用存在一个奇怪的问题。 SDK 23权限弹出式窗口(如外部存储设备)被以下附加的警报阻止。 最初,我认为这与我的手机有关,但似乎并没有影响到我安装的其他任何应用程序。 这个问题可能与安装调试版本有关,还是我的权限处理有问题? 我以为它可能与我使用的广告平台之一有关,但我尝试禁用它们,但它仍然显示 我已经在下面粘贴了生成此权限请求的图像保存功能。 我正在使用Dexter来节省编写一大堆丑陋的样板 public static void saveToExternalStorageIfAllowed(final Context context, final Bitmap bitmapImage, final String title) { final Tracker t = ((LoLHistory) context.getApplicationContext()).getTracker(LoLHistory.TrackerName.APP_TRACKER); // saving to publicly visible/accessible folder. Requires write permission int permissionCheck = ContextCompat.checkSelfPermission(context
  • Genymotion:安装失败并显示消息 INSTALL_FAILED_VERIFICATION_FAILURE。(Genymotion: Installation failed with message INSTALL_FAILED_VERIFICATION_FAILURE.)
    问题 我在Genymotion模拟器上运行我的应用程序,但从过去2-3天开始,它显示Installation failed with message INSTALL_FAILED_VERIFICATION_FAILURE. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. Installation failed with message INSTALL_FAILED_VERIFICATION_FAILURE. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. 错误。 我不知道是什么问题。 谢谢 回答1 这是 Genymotion 团队对问题的解释以及如何快速解决它。 Android 应用程序安装的步骤之一是应用程序验证。 此步骤是一项安全功能,可防止安装包括恶意软件在内的应用程序。 此步骤仅在安装 Google Play 服务时激活。 对于安全的应用程序
  • 如何抑制Python中的控制台输出?(How to suppress console output in Python?)
    问题 我正在使用Pygame / SDL的操纵杆模块从游戏手柄获取输入。 每次调用它的get_hat()方法时,它都会打印到控制台。 这是有问题的,因为我使用控制台来帮助调试,现在SDL_JoystickGetHat value:0: 60淹没它。 有什么方法可以禁用此功能吗? 通过Pygame / SDL中的选项还是在函数调用时取消控制台输出? 我在Pygame文档中没有提到这一点。 编辑:原来是由于在编译SDL库时打开了调试功能。 回答1 这是来自joystick.c的相关代码块(通过SVN,位于http://svn.seul.org/viewcvs/viewvc.cgi/trunk/src/joystick.c?view=markup&revision=2652&root=PyGame) value = SDL_JoystickGetHat (joy, _index); #ifdef DEBUG printf("SDL_JoystickGetHat value:%d:\n", value); #endif if (value & SDL_HAT_UP) { 开启调试功能似乎是一个问题。 回答2 仅出于完整性考虑,以下是戴夫·史密斯(Dave Smith)博客的一个不错的解决方案: from contextlib import contextmanager import sys