Java 如何通过编程检测Android Go edition 8.1设备上运行的检查或识别应用程序

Java 如何通过编程检测Android Go edition 8.1设备上运行的检查或识别应用程序,java,android,android-8.1-oreo,android-go,Java,Android,Android 8.1 Oreo,Android Go,我想在Android Go设备上禁用一些功能并减少内存消耗。我想要一个适用于所有Android设备的APK 我如何检测我的应用程序在Android Go 8.1设备上运行? 检查8.1版是否足够,或者8.1版是否也会分发到普通的Android设备上?似乎没有直接的api来检索应用程序是否正在运行 但您可以通过以下组合来覆盖该案例: 基于设备内存并决定应用程序的阈值: private ActivityManager.MemoryInfo getAvailableMemory() { Activi

我想在Android Go设备上禁用一些功能并减少内存消耗。我想要一个适用于所有Android设备的APK

我如何检测我的应用程序在Android Go 8.1设备上运行?
检查8.1版是否足够,或者8.1版是否也会分发到普通的Android设备上?

似乎没有直接的api来检索应用程序是否正在运行

但您可以通过以下组合来覆盖该案例:

基于设备内存并决定应用程序的阈值:

private ActivityManager.MemoryInfo getAvailableMemory() {
 ActivityManager activityManager = 
(ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new 
ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
return memoryInfo;
}
对于特定型号/制造商,可采取进一步的类似步骤:

String deviceName = android.os.Build.MODEL;
String deviceMan = android.os.Build.MANUFACTURER;

希望能有所帮助。

这对我来说很有效,基于预装的应用程序

如果安装了Assistant Go或Google Go版本,肯定是Android Go设备

在极少数情况下,这些应用程序没有预装,我们会寻找Gmail Go和Youtube Go预装版

在配备Android 8.1 Go的华为Y5 Lite上进行测试

公共静态布尔值isAndroidGoEditionContext上下文{ 最后一个字符串GMAIL_GO=com.google.android.gm.lite; 最后一个字符串YOUTUBE_GO=com.google.android.apps.YOUTUBE.mango; 最后一个字符串GOOGLE_GO=com.GOOGLE.android.apps.searchlite; 最终字符串助手_GO=com.google.android.apps.ASSISTANT; 布尔值isGmailGoPreInstalled=isPreInstalledAppcontext,GMAIL_GO; 布尔值isYoutubeGoPreInstalled=isPreInstalledAppcontext,YOUTUBE\u GO; 布尔值isGoogleGoPreInstalled=isPreInstalledAppcontext,GOOGLE_GO; 布尔值isAssistantGoPreInstalled=isPreInstalledAppcontext,ASSISTANT_GO; 如果预安装了GoogleGo |已安装IsAssistantgOprein{ 返回true; } ifisGmailGoPreInstalled&&isYoutubeGoPreInstalled{ 返回true; } 返回false; } 私有静态布尔值isPreInstalledAppContext上下文,字符串packageName{ 试一试{ PackageManager pacMan=context.getPackageManager; PackageInfo PackageInfo=pacMan.getpackageinfo packagename,PackageManager.GET_活动; ifpackageInfo!=null{ //检查图像操作系统是否随附 int mask=ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP; 返回packageInfo.applicationInfo.flags和mask!=0; } }catch PackageManager.NameNotFounde异常{ //应用程序未安装 } 返回false; } 根据我的经验,is ActivityManager.islowram设备相当于一部Android Go手机

布尔isAndroidGo{ 返回ActivityManagercontext.getSystemServiceContext.ACTIVITY\u服务 .Islowram装置; } }
虽然,上次我看文档时,我认为它在任何地方都明确地说,Android Go和IsLowram设备是等效的。

有一个完整的8.1版本。@chrylis你是什么意思?Android 8.1已经在Pixel 2上发布了。你确定com.google.Android.apps.assistant吗?@Frank是google assistant Go,是google assistant,所以我认为他是正确的。