80,360
社区成员
发帖
与我相关
我的任务
分享
private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int QUERYSUCESS = 0;
private static final int INSERTSUCESS = 1;
private static final int UPDATESUCESS = 2;
private static final int DELETESUCESS = 3;
private MyOpenHelper myOpenHelper;
static{
sURIMatcher.addURI("com.itheima.provider", "query", QUERYSUCESS);
sURIMatcher.addURI("com.itheima.provider", "insert", INSERTSUCESS);
sURIMatcher.addURI("com.itheima.provider", "update", UPDATESUCESS);
sURIMatcher.addURI("com.itheima.provider", "delete", DELETESUCESS);
}
@Override
public boolean onCreate() {
myOpenHelper = new MyOpenHelper(getContext());
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
int code = sURIMatcher.match(uri);
if (code ==QUERYSUCESS )
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Cursor cursor = db.query("info", projection, selection, selectionArgs, null, null, sortOrder);
getContext().getContentResolver().notifyChange(uri, null);
return cursor;
}else{
throw new IllegalArgumentException("你错了");
}
}
这是解析的
Uri uri = Uri.parse("content://com.itheima.provider/query");
Cursor cursor = getContentResolver().query(uri, new String[]{"name","money"}, null, null, null);
if (cursor!=null) {
while(cursor.moveToNext()){
String name = cursor.getString(0);
String money = cursor.getString(1);
System.out.println("name:"+name+"---"+money);
}
}
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.itheima.db.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 配置内容提供者 -->
<provider
android:name="com.itheima.db.AccountProvider"
android:readPermission="com.read"
android:authorities="com.itheima.provider" >
</provider>
</application>
这是报的异常12-18 14:39:08.586: E/AndroidRuntime(13025): FATAL EXCEPTION: main
12-18 14:39:08.586: E/AndroidRuntime(13025): Process: com.itheima.readdb, PID: 13025
12-18 14:39:08.586: E/AndroidRuntime(13025): java.lang.IllegalStateException: Could not execute method of the activity
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$1.onClick(View.java:3823)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View.performClick(View.java:4438)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$PerformClick.run(View.java:18422)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Handler.handleCallback(Handler.java:733)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Handler.dispatchMessage(Handler.java:95)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Looper.loop(Looper.java:136)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-18 14:39:08.586: E/AndroidRuntime(13025): at dalvik.system.NativeStart.main(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): Caused by: java.lang.reflect.InvocationTargetException
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$1.onClick(View.java:3818)
12-18 14:39:08.586: E/AndroidRuntime(13025): ... 11 more
12-18 14:39:08.586: E/AndroidRuntime(13025): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.itheima.db.AccountProvider from ProcessRecord{b1297448 13025:com.itheima.readdb/u0a5} (pid=13025, uid=10005) that is not exported from uid 10004
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Parcel.readException(Parcel.java:1465)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Parcel.readException(Parcel.java:1419)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2848)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityThread.acquireProvider(ActivityThread.java:4415)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2192)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.content.ContentResolver.acquireProvider(ContentResolver.java:1378)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.content.ContentResolver.insert(ContentResolver.java:1184)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.itheima.readdb.MainActivity.click1(MainActivity.java:34)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itheima.readdb"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="com.read"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.itheima.readdb.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>