如何从第三方库运行活动?

时间:2019-05-21 14:42:14

标签: android android-intent android-activity

我正在参加非活动课。在这个地方,我想从附加到我的项目的第3方库中运行活动。我写了一些我认为可以做到的代码:

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 :(得分:0)

您做错了。您从不使用new创建活动。无法正确初始化。而是创建一个Intent以启动该Activity并调用context.startActivity()来创建并启动它。

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

如果活动在库中,那应该可以工作。如果要在设备上的另一个应用程序中启动活动,则可以使用其他Intent构造函数之一(具体取决于您要启动的方式/方式-特定应用程序中的特定活动?可以对特定数据类型执行某项操作(例如共享或查看)的活动?还有其他事情吗?)

答案 1 :(得分:0)

在您的图书馆中,您可以这样做:

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);