问题描述
我看了刚才的一切有在这里找到在这个问题上,没有得到过去,这
我有一个简单的应用程序开始的 MainActivity
,我的内容提供商
中正确定义的AndroidManifest.xml
的的ContentProvider
类似乎alrighty ......这已经在运行4.3的Nexus I9250和华硕便笺运行测试4.2.1以及VDevices运行果冻豆。该应用程序在每一个实例中运行,不死机,给了我 LogCat中
的唯一事情就是无法找到de.somename.provider供应商信息
在哪里我的片段中的一个尝试查询内容提供商
并获得光标点。在这里,code:
的AndroidManifest.xml
<?XML版本=1.0编码=UTF-8&GT?;
<采用-SDK安卓的minSdkVersion =14
机器人:targetSdkVersion =18/><应用机器人:allowBackup =真
机器人:图标=@绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ AppTheme>
<活动机器人:名字=de.somename.hvk3.MainActivity
机器人:标签=@字符串/ APP_NAME>
&所述;意图滤光器>
<作用机器人:名字=android.intent.action.MAIN/>
<类机器人:名字=android.intent.category.LAUNCHER/>
< /意向滤光器>< /活性GT;
<活动机器人:名字=de.somename.hvk3.UserSettingActivity
机器人:标签=@字符串/设置>< /活性GT;
<供应商的android:当局=de.somename.provider
机器人:启用=真
机器人:多进程=真
机器人:名字=。hvkContentProvider
机器人:出口=真正的>< /提供商GT;
< /用途>
hvkContentProvider.java
公共类hvkContentProvider扩展ContentProvider的{私有静态最后弦乐DATABASE_NAME =hvkDB;
私有静态最终诠释DATABASE_VERSION = 1;
公共静态最后弦乐管理局=de.somename.provider;
公共静态最后弦乐ElementPath =/ hv_kontakte;
公共静态最终乌里CONTENT_URI = Uri.parse(内容://+ +管理局ElementPath);
私有静态最终诠释ALLROWS = 1;
私有静态最终诠释SINGLE_ROW = 2;私有静态最终UriMatcher suriMatcher =新UriMatcher(UriMatcher.NO_MATCH);
静态{
suriMatcher.addURI(de.somename.provider,ElementPath,ALLROWS);
suriMatcher.addURI(de.somename.provider,ElementPath +/#,SINGLE_ROW);
}公共静态最后弦乐KEY_ID =_id;
公共静态最后弦乐为key_type =类型;
公共静态最后弦乐KEY_CLTYP =cltyp;
公共静态最后弦乐KEY_MDT =MDT;
公共静态最后弦乐KEY_OBJ =目标文件;
公共静态最后弦乐KEY_VTR =VTR;
公共静态最后弦乐KEY_FKZ =FKZ;
公共静态最后弦乐KEY_NAME =名;
公共静态最后弦乐KEY_VNAME =VNAME;
公共静态最后弦乐KEY_TEL =电话;
公共静态最后弦乐KEY_FAX =传真;
公共静态最后弦乐KEY_MOBIL =美孚
公共静态最后弦乐KEY_EMAIL =电子邮件;私人MySQLiteOpenHelper myOpenHelper;@覆盖
公共布尔的onCreate(){ myOpenHelper =新MySQLiteOpenHelper(的getContext(),DATABASE_NAME,空,DATABASE_VERSION);
返回true;
}@覆盖
公共光标查询(URI URI,字符串[]投影,字符串的选择,
的String [] selectionArgs两个,字符串中将sortOrder){ SQLiteDatabase分贝= myOpenHelper.getReadableDatabase(); 字符串GROUPBY = NULL;
字符串有= NULL;
SQLiteQueryBuilder的QueryBuilder =新SQLiteQueryBuilder();
queryBuilder.setTables(MySQLiteOpenHelper.DATABASE_TABLE); 开关(suriMatcher.match(URI)){
案例SINGLE_ROW:
字符串ROWID = uri.getPathSegments()得到(1)。
queryBuilder.appendWhere(KEY_ID +=+ ROWID);
默认:打破;
} 光标光标= queryBuilder.query(分贝,投影,选择,selectionArgs两个,GROUPBY,HAVING中将sortOrder); 返回游标;
}@覆盖
公众诠释删除(URI URI,选择字符串,字符串[] selectionArgs两个){
SQLiteDatabase分贝= myOpenHelper.getWritableDatabase();
开关(suriMatcher.match(URI)){
案例SINGLE_ROW:
字符串ROWID = uri.getPathSegments()得到(1)。
选择= KEY_ID +=+ ROWID
+(!TextUtils.isEmpty(选择)?
AND(+选择+')':);
默认:打破;
}
//返回删除的项目的数量,您必须指定一个where子句。要删除所有行和1返回一个值通
如果(选择== NULL)
选择=1; 返回db.delete(MySQLiteOpenHelper.DATABASE_TABLE,选择selectionArgs两个);
}@覆盖
公共乌里插入(URI URI,ContentValues值){ SQLiteDatabase分贝= myOpenHelper.getWritableDatabase();
字符串nullColumnHack = NULL;
长ID = db.insert(MySQLiteOpenHelper.DATABASE_TABLE,nullColumnHack,价值观); 如果(ID -1个){
乌里insertedId = ContentUris.withAppendedId(CONTENT_URI,身份证);
。的getContext()getContentResolver()有NotifyChange(insertedId,NULL);
返回insertedId;
}
其他
返回null;
}@覆盖
公众诠释更新(开放的URI,ContentValues值,字符串的选择,
的String [] selectionArgs两个){ SQLiteDatabase分贝= myOpenHelper.getWritableDatabase(); 开关(suriMatcher.match(URI)){
案例SINGLE_ROW:
字符串ROWID = uri.getPathSegments()得到(1)。
选择= KEY_ID +=+ ROWID
+(!TextUtils.isEmpty(选择)?
AND(+选择+')':);
默认:打破;
} 返回db.update(MySQLiteOpenHelper.DATABASE_TABLE,价值观,选择,selectionArgs两个);
}@覆盖
公共字符串的getType(URI URI){
开关(suriMatcher.match(URI)){
案例ALLROWS:
返回vnd.android.cursor.dir / vnd.somename.contacts
案例SINGLE_ROW:
返回vnd.android.cursor.item / vnd.somename.contacts
默认:
抛出新抛出:IllegalArgumentException(不支持的URI:+ URI);
}
}@覆盖
公共ParcelFileDescriptor中openFile(URI URI,字符串模式)抛出FileNotFoundException异常{ //查找行ID,并把它作为一个文件名
字符串ROWID = uri.getPathSegments()得到(1)。 //创建的应用程序外部文件目录下的文件对象
字符串picsDir = Environment.DIRECTORY_PICTURES;
档案文件=新的文件(的getContext()getExternalFilesDir(picsDir),ROWID); 如果(!file.exists()){
尝试{
file.createNewFile();
}赶上(IOException异常五){
//Log.d(TAG,文件创建失败:+ e.getMessage());
}
} //翻译mode参数到相应的包裹的文件描述符模式
INT中将fileMode = 0;
如果(mode.contains(W))
中将fileMode | = ParcelFileDescriptor.MODE_WRITE_ONLY;
如果(mode.contains(R))
中将fileMode | = ParcelFileDescriptor.MODE_READ_ONLY;
如果(mode.contains(+))
中将fileMode | = ParcelFileDescriptor.MODE_APPEND; 返回ParcelFileDescriptor.open(文件中将fileMode);
}私有类MySQLiteOpenHelper扩展SQLiteOpenHelper {//以前是静态的 公共静态最后弦乐DATABASE_TABLE =hv_kontakte;
私有静态最后弦乐DATABASE_CREATE =
CREATE TABLE+ DATABASE_TABLE +(+ KEY_ID +INTEGER PRIMARY KEY AUTOINCREMENT,+
为key_type +TEXT+ KEY_CLTYP +TEXT+ KEY_MDT +INTEGER,+ KEY_OBJ +INTEGER
+ KEY_VTR +INTEGER,+ KEY_FKZ +INTEGER,+ KEY_NAME +TEXT+ KEY_VNAME +TEXT
+ KEY_TEL +TEXT+ KEY_FAX +TEXT+ KEY_MOBIL +TEXT+ KEY_EMAIL +TEXT); 公共MySQLiteOpenHelper(上下文的背景下,字符串名称,SQLiteDatabase.CursorFactory工厂,诠释的版本){
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
} @覆盖
公共无效的onCreate(SQLiteDatabase数据库){
database.execSQL(DATABASE_CREATE);
hvkContentProvider.this.insertSomeContacts();
} @覆盖
公共无效onUpgrade(SQLiteDatabase数据库,诠释oldVersion,诠释静态网页){
database.execSQL(DROP TABLE IF EXISTS+ DATABASE_TABLE);
的onCreate(数据库);
}
}
}
HdwFragment.java
公共类HdwFragment扩展片段{私人SimpleCursorAdapter hdwDataAdapter;
私人的ListView列表视图;
公共静态最后弦乐ARG_SECTION_NUMBER =SECTION_NUMBER;
私有静态最后弦乐TAG =HdwFragment;
公共HdwFragment(){}@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){ 上下文的背景下= getActivity();
查看rootView = inflater.inflate(R.layout.fragment_all,集装箱,FALSE);
TextView的dummyTextView =(TextView中)rootView.findViewById(R.id.section_label);
dummyTextView.setText(Dienstleister);
//android.support.v4.app.LoaderManager loaderManager = getLoaderManager(); Log.i(TAGgetContentResolver之前);
ContentResolver的CR = context.getContentResolver();
Log.i(TAGresult_columns之前);
的String [] = result_columns新的String [] {
hvkContentProvider.KEY_ID,
hvkContentProvider.KEY_TYPE,
hvkContentProvider.KEY_CLTYP,
hvkContentProvider.KEY_NAME,
hvkContentProvider.KEY_VNAME
};
Log.i(TAG,其中,whereArgs和秩序之前);
字符串,其中= NULL;
字符串whereArgs [] = NULL;
为了字符串= NULL;
Log.i(TAGresultCursor行动之前);
Log.i(TAG,hvkContentProvider URI:+ hvkContentProvider.CONTENT_URI);
光标resultCursor = cr.query(hvkContentProvider.CONTENT_URI,result_columns,其中,whereArgs,顺序);
Log.i(TAGresultCursor =+ resultCursor);
Log.i(TAGfromColumns之前);
的String [] = fromColumns新的String [] {
hvkContentProvider.KEY_TYPE,
hvkContentProvider.KEY_CLTYP,
hvkContentProvider.KEY_NAME,
hvkContentProvider.KEY_VNAME
};
Log.i(TAGtoViews之前);
INT [] = toViews新INT [] {
R.id.contactType,
R.id.contactCltype,
R.id.contactName,
R.id.contactVname
};
Log.i(TAG,适配器之前);
hdwDataAdapter =新SimpleCursorAdapter(getActivity(),R.layout.object_list_item,resultCursor,fromColumns,toViews,0);
列表视图=(ListView控件)rootView.findViewById(R.id.list_all);
listview.setAdapter(hdwDataAdapter);
Log.i(TAG,回路布局之前);
返回(的LinearLayout)rootView;
}@覆盖
公共无效onActivityCreated(捆绑savedInstanceState){
super.onActivityCreated(savedInstanceState); //捆绑ARGS = NULL;
//loaderManager.initLoader(LOADER_ID,ARGS,loaderCallback);
}
}
的方法:insertSomeFunctions()我已经离开了,因为它不会在这里做一个区别,要去把赏金这个尽快。真的需要这个工作。
<供应商的android:当局=de.somename.provider
机器人:启用=真
机器人:多进程=真
机器人:名字=。hvkContentProvider
机器人:出口=真正的>< /提供商GT;
在&LT从参考页;提供商GT;
:
In your case, android:authorities
should have the value: de.somename.provider.hvkContentProvider
.
So, if you are defining package
in the manifest
tag of AndroidManifest.xml
, make sure hvkContentProvider
is in that package. Else, change android:name=".hvkContentProvider"
to android:name="de.somename.hvk3.hvkContentProvider"
or your.package.name.hvkContentProvider
这篇关于无法找到供应商信息为<定制的提供商GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!