Как определить, какая активность вызвала запуск службы в Android? - PullRequest
0 голосов
/ 12 июля 2020

Предположим, у меня есть несколько действий под названием A , B , C.

Из этих действий я хочу начать фон служба называется X .

Можно ли определить из службы, каково имя класса активности, которая ее запустила?

Например, если служба была началось с действия B Я должен получить что-то вроде B или B.class

Я хочу знать, могу ли я сделать это без жесткого кодирования имя класса, поместив его в качестве дополнения в намерение, вызывающее запуск службы (поэтому, если я создам больше действий, мне не нужно добавлять имя класса в намерение для каждого действия).

1 Ответ

0 голосов
/ 12 июля 2020

Сначала определите контекст или действие в своем классе X.

public class X ()
{
    private Activity activity;

    public X (Activity activity) {
    this.activity = activity;
     }
}

затем создайте метод в своем классе X, чтобы получить имя действия

  public void GetName() {
    PackageManager packageManager = activity.getPackageManager();
    try {
        ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0);
        Log.e("called from service", "Activity name:" + info.name);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}

OR

 public void GetName() {
        String name  = activity.getClass().getSimpleName();
        Log.e("service",name);
    }

, то вы можете вызвать этот метод в своем классе B, например:

X service  = new X(B.this);
service.GetName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...