如何从OSGI Bundle启动方法启动Android活动



我试图在OSGI捆绑包中显示Toast消息,该捆绑包显然使用了Android API。toast需要一个应用程序上下文,所以我想先在捆绑包中创建一个活动。这是我的活动课,上面有祝酒词:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    Toast.makeText(this.getApplicationContext(), "This is OSGI Bundle", Toast.LENGTH_SHORT).show();
    }

}

现在,我想从Bundle Activator类中的start()方法开始上面的活动。下面是这个级别:

public class Activator implements BundleActivator {
    private static BundleContext context;
    static BundleContext getContext() {
        return context;
    }

    public void start(BundleContext bundleContext) throws Exception {
        Activator.context = bundleContext;
   //I WOULD LIKE TO START THE ACTIVITY HERE TO DISPLAY THE TOAST MESSAGE

    }

    public void stop(BundleContext bundleContext) throws Exception {
        Activator.context = null;

    }
}

我怎样才能做到这一点?我所知道的开始一项活动的唯一方法是当你在另一项活动中时,比如这里,但我的情况并非如此。有人能帮忙吗?非常感谢。

我认为我的主题会给你带来回应,即使不是完美的。你也可以检查FelixDroid,它使用了其他项目中看到的不同方法。然而,我渴望一个更好的解决方案。去看看我是否能找到或写一个ContextWrapper来填补这个账单。

Android对OSGi捆绑包的完全支持

最新更新