2010-07-12 42 views
28

AccountAuthenticator.java:如何从意图获取上下文?

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

AccountActivity.java:
在的onCreate(捆绑aBundle)我想说:

getIntent().getContext(); 

不过的getContext()不存在。

如何从意图获取上下文?
由于它在Intent构造函数中传递,我期待它在到达AccountActivity时可用。

+0

为什么你需要从意图上下文? – Maragues 2010-07-12 10:55:35

+0

我需要创建Intent的Service(即Context),以便能够在构造函数中创建一个AsyncTask。如果我不这样做,我会得到:“java.lang.SecurityException:调用者uid 10027与认证者的uid不同”,因为AsyncTask正在执行Accountmanager am = Accountmanager.get(context)。 – user77115 2010-07-12 11:00:19

+0

对于我来说,我试图使用TDD并验证正在测试的代码中设置了正确的上下文。 – PseudoNoise 2013-06-05 18:47:10

回答

32

如何从 意图获取上下文?

你不知道。

,因为它是在Intent 构造过去了,我期待它是可以用在 AccountActivity到来 。

Context仅用于帮助创建路由信息Intent。由于Intent可以(且经常)生活在任何Context之外,所以Intent不能容纳在Context之上。

我需要的服务(即上下文),其 创建的意图,以便能够 创建的AsyncTask把它在 构造。

你不能这样做,对不起。

如果我不这样做,我得到: “java.lang.SecurityException异常:主叫 UID 10027比 认证的UID不同”,因为 的AsyncTask是干什么的AccountManager AM = Accountmanager.get (上下文)。

这与AsyncTask无关。这与进程有关,而不是线程。

+0

完美的解释。荣誉:) CommonsWare – 2017-06-23 05:43:56