почему ошибка в uri моего содержимого?

#java #android #uri #android-contentprovider

#java #Android #uri #android-contentprovider

Вопрос:

это класс, который расширяет базовые столбцы

 public static final String AUTHORITY = "imammuda";
public static final String PROGRAMPATH = "Program";

public static final Uri PROGRAM_URI = Uri.parse("content://"   AUTHORITY   "/"   PROGRAMPATH);
  

это класс ContentProvider, который расширяет contentprovider

 static{
    sUriMatcher.addURI(ImamShareData.AUTHORITY, ImamShareData.PROGRAMPATH, PROGRAM);
    sUriMatcher.addURI(ImamShareData.AUTHORITY, ImamShareData.PROGRAMPATH   "/#", PROGRAM_ID);
}
@Override
public Uri insert(Uri uri, ContentValues initialvalues) {
    TableNumber = sUriMatcher.match(uri);
    if( TableNumber != PROGRAM){
        throw new IllegalArgumentException("Unknown URI "   uri);
    }
}
  

это класс, который расширяет активность расширяемого списка

 private void createdata(){
(...)
(...)
    for(int i = 0; i < title.length; i  ){
        ContentValues values = new ContentValues();
        values.put(ImamShareData.DataContent.KEY_PROGRAM_TITLE, title[i]);
        Uri group = cr.insert(ImamShareData.DataContent.PROGRAM_URI, values); <== when call give error
    }
  

это manifest xml

 <provider android:authorities="imammuda" android:name="contentProvider" android:multiprocess="true"></provider>
  

это logcat

 05-12 12:03:49.823: ERROR/AndroidRuntime(3875): Caused by: java.lang.IllegalArgumentException: Unknown URI content://imammuda/Program
05-12 12:03:49.823: ERROR/AndroidRuntime(3875):     at com.android.imammuda.contentProvider.insert(contentProvider.java:139)
05-12 12:03:49.823: ERROR/AndroidRuntime(3875):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:197)
05-12 12:03:49.823: ERROR/AndroidRuntime(3875):     at android.content.ContentResolver.insert(ContentResolver.java:592)
05-12 12:03:49.823: ERROR/AndroidRuntime(3875):     at com.android.imammuda.Program.createdata(Program.java:53)
05-12 12:03:49.823: ERROR/AndroidRuntime(3875):     at com.android.imammuda.Program.onCreate(Program.java:32)
  

Ответ №1:

В файле AndroidManifest укажите полное имя пакета в элементе android:name. Попробуйте использовать authority в качестве имени пакета.