【问题标题】:Android studio cannot getApplicationContext() to awsAndroid Studio 无法 getApplicationContext() 到 aws
【发布时间】:2018-04-05 09:23:54
【问题描述】:
我遵循 aws 指南,但收到 getApplicationContext() 的错误。
package com.example.wcyv3.stylish;
import android.content.Context;
import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.regions.Regions;
public class ManagerClass {
public CognitoCachingCredentialsProvider getCredentials() {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),// Context
"ap-southeast-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Identity pool ID
);
return credentialsProvider;
}
}
【问题讨论】:
标签:
javascript
android
amazon-web-services
amazon-cognito
【解决方案1】:
这是因为你的类中没有 getApplicationContext() 方法,它属于 Activity、Fragment、Application 等。为了解决这个问题,你可以通过 constructor 传递上下文或者您可以将方法设置为static,然后将上下文作为参数传递。
通过构造函数:
public class ManagerClass {
private Context context;
public ManagerClass(Context context) {
this.context = context;
}
public CognitoCachingCredentialsProvider getCredentials() {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
context,
"ap-southeast-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Identity pool ID
);
return credentialsProvider;
}
}
或者通过静态方法的参数:
public class ManagerClass {
public static CognitoCachingCredentialsProvider getCredentials(Context context) {
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
context,
"ap-southeast-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxx", // Identity pool ID
);
return credentialsProvider;
}
}
【解决方案2】:
在您的活动类中使用此方法或在方法中使用Context 类型的参数。
public CognitoCachingCredentialsProvider getCredentials(Context context){
return new CognitoCachingCredentialsProvider (context, "ap-southeast-1:xxxxxxxxxxxxxxxxxxxxxxxxxxxx" // Identity pool ID
);