2016-07-03 7 views
2

В моем проекте я хочу прочитать из строки имя моего пакета, но я получил следующую ошибку. , прежде чем я изменяю может кодировать это было так:java.lang.IllegalArgumentException при чтении из строки

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

Код в блоке инициализации static запускается до ApplicationonCreate. Таким образом, ваше поле context по-прежнему null, когда вы добавляете URI в соответствие.

Возможно, вы можете использовать BuildConfig.APPLICATION_ID + ".model" в своей статической инициализации? BuildConfig поля записываются во время сборки, поэтому они будут доступны в статическом блоке инициализации. Если APPLICATION_ID не соответствует вашим потребностям, вы всегда можете добавить настраиваемое поле конфигурации сборки в свой файл build.gradle.

+0

Правильно. Я использую BuildConfig.APPLICATION_ID, и он работает хорошо. спасибо большое ... – bmm

+0

Когда вы найдете ответ, который вам полезен, вы должны его перенести. И если это ответ на заданный вами вопрос, и он решает вашу проблему, тогда вы также должны принять его. Таким образом, если у кого-то есть такая же проблема и он найдет эту страницу, они будут знать, что этот ответ работает. –

Смежные вопросы