Как запустить активность из сторонней библиотеки? - PullRequest
0 голосов
/ 21 мая 2019

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

Intent intent = new Intent();
intent.putExtra(THIRD_PARTY_ACTIVITY.REPORT_EXTRA, parts.toString());
Activity activity = new THIRD_PARTY_ACTIVITY();
activity.startActivity(intent);

Этот код успешно компилируется, но когда я его выполняю, я получаю сообщение об ошибке:

Причина: java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.app.ActivityThread $ ApplicationThread android.app.ActivityThread.getApplicationThread ()' для ссылки на пустой объект

Как запустить действие от стороннего разработчикабиблиотека

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

В вашей библиотеке вы можете сделать это:

Intent intent = new Intent();
// Here you need to set the ACTION or the COMPONENT in the Intent
//  so that Android knows which Activity you want to start
// Also, you need to set FLAG_ACTIVITY_NEW_TASK because you aren't calling
//  startActivity() on an Activity Context
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(THIRD_PARTY_ACTIVITY.REPORT_EXTRA, parts.toString());
Application.getApplicationContext().startActivity(intent);
0 голосов
/ 21 мая 2019

Вы делаете это неправильно.Вы НИКОГДА не создаете Активность с новым.Он не будет правильно инициализироваться.Вместо этого вы создаете Intent для запуска этого Activity и вызываете context.startActivity () для его создания и запуска.

void launchThirdPartyActivity(Context context) {
   Intent intent = new Intent(context, THIRD_PARTY_ACTIVITY.class);
   context.startActivity(intent);
}

Это должно работать, если действие находится в библиотеке.Если вы пытаетесь запустить Activity в другом приложении на устройстве, вы будете использовать один из других конструкторов Intent (который зависит от того, как / что вы пытаетесь запустить - конкретное действие в определенном приложении?действие, которое может выполнить действие (например, поделиться или просмотреть) с определенным типом данных? Что-то еще?)

...