如何检测Android Go?
有没有办法检测到设备正在运行Android Go edition?需要确定自API 29以来,设备是否能够提供系统警报窗口 根据引用,如何检测Android Go?,android,permissions,android-10.0,android-go,Android,Permissions,Android 10.0,Android Go,有没有办法检测到设备正在运行Android Go edition?需要确定自API 29以来,设备是否能够提供系统警报窗口 根据引用,Settings.canDrawOverlays(上下文)在API 29 Go上总是返回false。如果不知道系统是否可以访问system\u ALERT\u WINDOW,就很难解决这个问题 ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); am.
Settings.canDrawOverlays(上下文)
在API 29 Go上总是返回false。如果不知道系统是否可以访问system\u ALERT\u WINDOW
,就很难解决这个问题
ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
am.isLowRamDevice();
以下代码可在ActivityManager.java
/**
*如果这是低RAM设备,则返回true。确切地说,一个设备是否内存不足
*最终取决于设备配置,但目前它通常意味着
*内存小于等于1GB的东西。这主要用于应用程序
*确定是否应关闭某些需要更多RAM的功能。
*/
公共布尔值isLowRamDevice(){
返回isLowRamDeviceStatic();
}
以下代码可在ActivityManager.java
/**
*如果这是低RAM设备,则返回true。确切地说,一个设备是否内存不足
*最终取决于设备配置,但目前它通常意味着
*内存小于等于1GB的东西。这主要用于应用程序
*确定是否应关闭某些需要更多RAM的功能。
*/
公共布尔值isLowRamDevice(){
返回isLowRamDeviceStatic();
}
您可以参考Android 11源代码的实现。
它仅使用ActivityManager.isLowRamDevice()
检查SYSTEM\u ALERT\u窗口
权限是否可用
packages\apps\Settings\src\com\android\Settings\Utils.java
/**
* Returns true if SYSTEM_ALERT_WINDOW permission is available.
* Starting from Q, SYSTEM_ALERT_WINDOW is disabled on low ram phones.
*/
public static boolean isSystemAlertWindowEnabled(Context context) {
// SYSTEM_ALERT_WINDOW is disabled on on low ram devices starting from Q
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
return !(am.isLowRamDevice() && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q));
}
您可以参考Android 11的实现源代码。 它仅使用
ActivityManager.isLowRamDevice()
检查SYSTEM\u ALERT\u窗口
权限是否可用
packages\apps\Settings\src\com\android\Settings\Utils.java
/**
* Returns true if SYSTEM_ALERT_WINDOW permission is available.
* Starting from Q, SYSTEM_ALERT_WINDOW is disabled on low ram phones.
*/
public static boolean isSystemAlertWindowEnabled(Context context) {
// SYSTEM_ALERT_WINDOW is disabled on on low ram devices starting from Q
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
return !(am.isLowRamDevice() && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q));
}
您只需查询
PackageManager
即可检查是否安装了一个Android GO预装应用程序,因为它们具有不同的软件包名称。
例如:
Gmail Go软件包名称:“com.google.android.gm.lite”
常规Gmail软件包名称:“com.google.android.gm”
您只需查询
PackageManager
即可检查是否安装了一个Android GO预装应用程序,因为它们具有不同的软件包名称。
例如:
Gmail Go软件包名称:“com.google.android.gm.lite”
常规Gmail软件包名称:“com.google.android.gm”
好吧,试着使用那个窗口捕捉异常。@blackapps,它对我有什么帮助?如果应用程序运行在Android QGo上,并且用户可以允许系统警报窗口,结果是一样的,但我不知道。好吧,这只是一个建议……好吧,试着使用那个窗口捕捉异常。@blackapps,这对我有什么帮助?如果应用程序运行在Android QGo上,并且用户可以允许系统警报窗口,结果是一样的,但我不知道。好吧,这只是一个建议…谢谢你,我会努力的!可能,你也知道模拟Android Go设备的方法吗?我尝试将模拟器设置为1GB的ram,并且
am.isLowRamDevice()
返回false
,这很有趣。还有Orange,目前还没有Android Go模拟器可用,不幸的是,文档似乎没有明确说明所有Android Go设备也是isLowRamDevice()==true。虽然我知道至少有一个是这样的。有人找到这方面的证据吗?谢谢你,试试看!可能,你也知道模拟Android Go设备的方法吗?我尝试将模拟器设置为1GB的ram,并且am.isLowRamDevice()
返回false
,这很有趣。还有Orange,目前还没有Android Go模拟器可用,不幸的是,文档似乎没有明确说明所有Android Go设备也是isLowRamDevice()==true。虽然我知道至少有一个是这样的。有人找到证据吗?