为了业务逻辑,我有一些Android模块都依赖于相同的库模块。
export const someAsyncAction = (param) => (dispatch, getState) => {
const { mock } = getState();
dispatch({
type: 'SOME_TYPE',
mock: mock + param,
})
}
it('should test someAsyncAction', () => {
const param = ' something';
const dispatch = jest.fn().mockImplementation();
const getState = () => ({
mock: 'mock value',
});
const expectedAction = {
type: 'SOME_TYPE',
mock: 'mock value something'
};
const callback = someAsyncAction(param);
expect(typeof callback).toBe('function');
callback.call(this, dispatch, getState);
expect(dispatch.mock.calls[0]).toEqual([expectedAction])
});
现在,我尝试从库中获取当前的com.example.api
-> com.example.app1
-> com.example.app2
-> com.example.app3
(MainActivity
)。在调用动作时没有指定所需的活动,我为其中具有android.intent.action.MAIN
动作的所有设备应用程序获取了IntentPicker。
如何获取当前MAIN
的类路径?
即MainActivity
答案 0 :(得分:0)
作为模块,主应用程序的单独部分,而一个模块基本上包含该应用程序的库类和资源。可以单独创建和测试模块。当您将模块与项目一起使用时,您的主应用程序可以使用该模块的资源,但是您的模块不能使用主应用程序的资源。
要满足您的需求,您可以使用程序包管理器从模块中调用主要活动。您可以在developer site上查看详细信息。呼叫类似
Intent appMainIntent = getPackageManager().getLaunchIntentForPackage("com.app.myproject");
startActivity(appMainIntent);
仅通知您,如果未找到包,则appMainIntent可以为null。因此,请在代码中检查空指针异常。
答案 1 :(得分:0)
要获取应用程序的当前程序包名称,可以调用getApplicationContext().getPackageName()
并获取此程序包的启动意图,如@ hari-n-jha所述,可以调用getPackageManager().getLaunchIntentForPackage( String packageName )
。 / p>
完整的解决方案是:
String packageName = getApplicationContext().getPackageName();
Intent i = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(i);