在我的项目中,我想从字符串中读取我的包名,但是我得到了以下错误。 在我改变代码之前它就像那样:
static {
sURLMatcher.addURI("com.nooshindroid.yastashir2.model", "alarm", ALARMS);
sURLMatcher.addURI("com.nooshindroid.yastashir2.model", "alarm/#", ALARMS_ID);
}
在我的应用程序类中,我得到这样的结果:
public static String context;
@Override
public void onCreate() {
context = getApplicationContext().getResources().getString(R.string.package_app);
}
当我改变它时:
static {
sURLMatcher.addURI(AlarmApplication.context+".model", "alarm", ALARMS);
sURLMatcher.addURI(AlarmApplication.context+".model", "alarm/#", ALARMS_ID);
}
这是我的错误:
Unable to create application com.nooshindroid.yastashir2.AlarmApplication: java.lang.IllegalArgumentException: Unknown URL content://com.nooshindroid.yastashir2.model/alarm
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4809)
at android.app.ActivityThread.access$1600(ActivityThread.java:154)
答案 0 :(得分:0)
static
初始化块中的代码在Application
onCreate
之前运行。因此,当您向匹配器添加URI时,context
字段仍为null
。
您可以在静态初始化中使用BuildConfig.APPLICATION_ID + ".model"
吗? BuildConfig
字段是在构建时写入的,因此将在静态初始化块中可用。如果APPLICATION_ID
不能满足您的需求,您可以随时在build.gradle
文件中添加自定义构建配置字段。