我该如何从Intent中获取上下文(Context)?

32

AccountAuthenticator.java:

Intent intent = new Intent(context, AccountActivity.class);

AccountActivity.java:
在 onCreate(Bundle aBundle) 中,我想说:

getIntent().getContext();

但是getContext()不存在。

我如何从Intent中获取Context?
由于它在Intent构造函数中传递,我期望它可以在AccountActivity中使用。


为什么需要从Intent中获取Context? - Maragues
我需要创建Intent的Service(即Context),以便能够在构造函数中创建AsyncTask。如果我不这样做,我会得到“java.lang.SecurityException:caller uid 10027与验证程序的uid不同”的错误,因为AsyncTask正在执行Accountmanager am = Accountmanager.get(context)。 - user77115
对我来说,我正在尝试使用TDD并验证代码下的正确上下文是否被设置。 - PseudoNoise
1个回答

34
我怎样从 Intent 中获取 Context?
你做不到。
由于它是在 Intent 构造函数中传递的,所以我希望在 AccountActivity 中到达时可以使用它。
Context 只用于帮助创建 Intent 路由信息。 由于 Intent 可以(并经常)存在于任何 Context 之外,因此 Intent 无法保留 Context。
我需要创建 Intent 的服务(即 Context),以便能够在构造函数中将其传入 AsyncTask。
很抱歉,您无法这样做。
如果不这样做,我会收到“java.lang.SecurityException:caller uid 10027 与 authenticator uid 不同”,因为 AsyncTask 执行了 Accountmanager am = Accountmanager.get(context)。
这与 AsyncTask 无关,而与进程有关,而不是线程。

完美的解释。赞 :) CommonsWare - Gaurav Deochakke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接