Как определить, проверить или идентифицировать приложение, запущенное на Android Go версии 8.1 Устройство программно - PullRequest
0 голосов
/ 06 мая 2018

Я бы хотел отключить некоторые функции и уменьшить потребление памяти на устройствах Android Go. Я хотел бы иметь один APK для всех устройств Android.

Как определить, что мое приложение работает на устройстве Android Go 8.1? Достаточно ли проверить версию 8.1 или версия 8.1 будет распространяться и на обычные устройства Android?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Это работает для меня, на основе предустановленных приложений.

Если установлены версии Assistant Go или Google Go , это определенно устройство Android Go.

В редких случаях, когда эти приложения не были предустановлены, мы ищем Gmail Go , а также Youtube Go с предустановкой.

Протестировано на Huawei Y5 Lite с Android 8.1 (Go).


public static boolean isAndroidGoEdition(Context context) {
    final String GMAIL_GO = "com.google.android.gm.lite";
    final String YOUTUBE_GO = "com.google.android.apps.youtube.mango";
    final String GOOGLE_GO = "com.google.android.apps.searchlite";
    final String ASSISTANT_GO = "com.google.android.apps.assistant";

    boolean isGmailGoPreInstalled = isPreInstalledApp(context, GMAIL_GO);
    boolean isYoutubeGoPreInstalled = isPreInstalledApp(context, YOUTUBE_GO);
    boolean isGoogleGoPreInstalled = isPreInstalledApp(context, GOOGLE_GO);
    boolean isAssistantGoPreInstalled = isPreInstalledApp(context, ASSISTANT_GO);

    if(isGoogleGoPreInstalled | isAssistantGoPreInstalled){
        return true;
    }
    if(isGmailGoPreInstalled && isYoutubeGoPreInstalled){
        return true;
    }

    return false;
}

private static boolean isPreInstalledApp(Context context, String packageName){
    try {
        PackageManager pacMan = context.getPackageManager();
        PackageInfo packageInfo = pacMan.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        if(packageInfo != null){
            //Check if comes with the image OS
            int mask = ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
            return (packageInfo.applicationInfo.flags & mask) != 0;
        }
    } catch (PackageManager.NameNotFoundException e) {
        //The app isn't installed
    }
    return false;
}

0 голосов
/ 06 мая 2018

Кажется, что нет прямого API для получения информации о том, работает ли приложение в GO-версии.

Но вы можете покрыть дело комбинацией следующего:

  • на основе памяти устройства и определения порогового значения для вашего приложения:

    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;
    

Надеюсь, это поможет.

...