[英]Android - get manifest meta-data out of activity
我想做这样的事情
private static final String url;
private static final String pass;
private static final String user;
static {
Bundle metadata = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA).metaData;
url = (String) metadata.get("JMSQueueURL");
user = (String) metadata.get("JMSQueueUsername");
pass = (String) metadata.get("JMSQueuePassword");
}
到目前为止它处于活动状态(但不是静态的),所以我可以得到包管理器,但现在我想将这段代码移动到另一个不继承 ContextWrapper 的类(从那里我们可以获得包管理器)。 有可能吗? 这个类类似于 util 类。
您可以将Context
从调用方法传递到Util
类中的方法,并使用那里的上下文来获取所需的详细信息。 通过这种方式,您可以使用不同的上下文从应用程序中的不同模块调用Util
类中的方法。
// Calling the Util method
Bundle metadata = Util.getMetaData(context);
...
// Inside the Util class
public static Bundle getMetaData(Context context) {
return context.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA).metaData;
}
这允许我从应用程序的任何地方访问元数据,而无需上下文:
public class MyAndroidApp extends Application {
private static MyAndroidApp instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static MyAndroidApp getInstance() {
return instance;
}
public static Bundle getMetadata() {
try {
return getInstance()
.getPackageManager()
.getApplicationInfo(getInstance().getPackageName(), PackageManager.GET_META_DATA)
.metaData;
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.