Показываем список приложений. Логирование. Context.

Урок #11

Урок 11 — Показываем список приложений. Логирование. Context.

В этом уроке мы с вами наконец-то начнем создавать настоящее полнофункциональное приложение, которое можно будет даже выгрузить в Google Play!

Наше приложение будет отображать список установленных приложений, информацию о них, и давать возможность удалить их, в том числе с помощью Root.

Создание проекта

В первую очередь, создайте новый проект. Вы уже знаете, как это сделать, но на всякий случай я прикреплю пошаговые скриншоты мастера создания проекта:

Выбор имени пакета и директории
Выбор имени пакета и директории

Выбор платформ и версий
Выбор платформ и версий

Выбор Activity
Выбор Activity

Настройка Activity
Настройка Activity

Теперь измените activity_main.xml, чтобы он выглядел вот так:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.test.packages.MainActivity">
</FrameLayout>

Запустив приложение, вы увидите пустой экран:

Пустой проект
Пустой проект

Так и должно быть.

Context

Context — очень важное понятие в Android. Контекст — это объект, который описывает текущее состояние среды, в которой выполняется код. Многие классы, с которыми вы будете работать, наследуют контекст, например:

  • Activity
  • Application
  • Service

Контекст потребуется вам для доступа ко многим вещам: к ресурсам, к другим компонентам приложения, к интерфейсу и т.д. Помните, мы использовали в Activity методы getResources() или getString()?

На самом деле, доступ к этим методам мы можем получить только из контекста. Если у нас нет инстанса Context, то мы не сможем получить доступ к тем же локализованным строкам.

Если вы сейчас все же до конца не поняли, что такое контекст — не переживайте, понимание этого придёт со временем.

Пакет

Понятие пакета (package) тоже очень важно. Каждое приложение в Android — это не только код, но и связанные с ним компоненты: ресурсы, манифест и т.д.

При сборке все это пакуется в файл APK (по сути — ZIP-архив) и подписывается ключом разработчика. Итого, package = код + ресурсы + мета-информация.

В Android есть менеджер пакетов, отвечающий за установку, обновление, удаление приложений, и хранящий информацию о них.

Программно получить к нему доступ можно через класс PackageManager. Инстанс же PackageManager, в свою очередь, можно получить, вызвав метод Context.getPackageManager().

Получение списка пакетов

Давайте же начнем создание нашего первого приложения! Мы уже выяснили, что нам нужно для начала: PackageManager и, соответственно, Context.

Будет не очень правильно писать весь код в Activity, поэтому создадим отдельный класс, который будет получать список установленных приложений. Нажмите правой кнопкой на наш основной пакет, после чего выберите New -> Java Class.

Создание нового класса
Создание нового класса

Введите имя класса AppManager и нажмите на кнопку ОК.

Имя нового класса
Имя нового класса

Создастся новый класс:

package com.test.packages;

/**
 * Класс, получающий список пакетов
 */
public class AppManager {
}

Нам понадобится контекст, чтобы получить PackageManager. Создайте конструктор, который получает в качестве аргумента Context:

public AppManager(Context context) {

}

Теперь создайте поле типа PackageManager и проинициализируйте его в конструкторе:

package com.test.packages;

import android.content.Context;
import android.content.pm.PackageManager;

/**
 * Класс, получающий список пакетов
 */
public class AppManager {

    private final PackageManager packageManager;

    public AppManager(Context context) {
        packageManager = context.getPackageManager();
    }

}

Кроме этого, нам не помешает вспомогательный класс, в котором мы будем хранить информацию о приложении.

Создайте еще один класс AppInfo:

package com.test.packages;

import android.graphics.drawable.Drawable;

/**
 * Информация о приложении
 */
public class AppInfo {

    private final String packageName;
    private final int versionCode;
    private final String versionName;
    private final String name;
    private final Drawable icon;


    public AppInfo(String packageName, int versionCode, String versionName, String name, Drawable icon) {
        this.packageName = packageName;
        this.versionCode = versionCode;
        this.versionName = versionName;
        this.name = name;
        this.icon = icon;
    }


    public String getPackageName() {
        return packageName;
    }

    public int getVersionCode() {
        return versionCode;
    }

    public String getVersionName() {
        return versionName;
    }

    public String getName() {
        return name;
    }

    public Drawable getIcon() {
        return icon;
    }
}

Теперь создадим метод в классе AppManager, который будет отдавать нам список установленных приложений.

В первую очередь, этот список нужно получить.



Продолжение доступно на платных тарифах

А вместе с ним — проверка домашних заданий нашими менторами.

Это совсем недорого — всего от 440 ₽ в месяц!



ВЫБРАТЬ ТАРИФ



Вход

Войдите, чтобы пользоваться всеми преимуществами.
Это займёт всего пару секунд!

или