Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测Android Go?_Android_Permissions_Android 10.0_Android Go - Fatal编程技术网

如何检测Android Go?

如何检测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.

有没有办法检测到设备正在运行Android Go edition?需要确定自API 29以来,设备是否能够提供系统警报窗口

根据引用,
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。虽然我知道至少有一个是这样的。有人找到证据吗?