权限异常。你把android:exported="true" 这个去掉试试。
解决方案 »
- 关于android中gps定位的问题
- 最新的android环境配置问题Eclipse4.2+ADT20.0.0
- 请问android怎么连接一个设备去在eclipse中调式代码?
- 更新progressbar出现application not response
- android 如何随意给几个点就可以画出一个多边行出来
- Android 2.3 有些问题
- sos android 传值问题
- android webview 如何获取对应的缓存图片
- android spinner下拉列表右侧箭头颜色怎么设置
- 我有意制造了一个异常,但是它却不在Console控制台显示啊.100分
- 自定义menu的布局
- 4.2以上的版本 超时休眠应该如何修改时间?
contentProvider代码package com.xuyu.db.contentProvider;import com.xuyu.database.MyDbOpenHelper;import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
public class contentProvider extends ContentProvider {
private static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int INSERT = 0;
private static final int DELETE = 1;
private static final int UPDATE = 2;
private static final int QUERY = 3;
static
{
matcher.addURI("com.xuyu.database","insert",INSERT);
matcher.addURI("com.xuyu.database","delete",DELETE);
matcher.addURI("com.xuyu.database","update",UPDATE);
matcher.addURI("com.xuyu.database","query",QUERY);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int result = matcher.match(uri);
switch(result)
{
case DELETE:
System.out.println("现在正在执行delete方法");
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.delete("person", selection, selectionArgs);
default:
System.out.println("方法执行产生异常");
return 0;
}
} @Override
public String getType(Uri arg0) {
return null;
} @Override
public Uri insert(Uri uri, ContentValues values) {
int result = matcher.match(uri);
switch(result)
{
case INSERT:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getReadableDatabase();
db.insert("person", "id", values);
return uri;
default:
return null;
}
} @Override
public boolean onCreate() {
return false;
} @Override
public Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder) {
int result = matcher.match(uri);
switch(result)
{
case QUERY:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.query("person", null, selection, selectionArgs, null, null, null);
default:
return null;
}
} @Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int result = matcher.match(uri);
switch(result)
{
case UPDATE:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.update("person", values, selection, selectionArgs);
default:
return 0;
}
}}MainActivity.java代码如下
[code=java]
package com.xuyu.application2;import android.support.v7.app.ActionBarActivity;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://com.xuyu.database/delete");
resolver.delete(uri, "name=?", new String[]{"allen"});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
contentProvider代码package com.xuyu.db.contentProvider;import com.xuyu.database.MyDbOpenHelper;import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
public class contentProvider extends ContentProvider {
private static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int INSERT = 0;
private static final int DELETE = 1;
private static final int UPDATE = 2;
private static final int QUERY = 3;
static
{
matcher.addURI("com.xuyu.database","insert",INSERT);
matcher.addURI("com.xuyu.database","delete",DELETE);
matcher.addURI("com.xuyu.database","update",UPDATE);
matcher.addURI("com.xuyu.database","query",QUERY);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int result = matcher.match(uri);
switch(result)
{
case DELETE:
System.out.println("现在正在执行delete方法");
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.delete("person", selection, selectionArgs);
default:
System.out.println("方法执行产生异常");
return 0;
}
} @Override
public String getType(Uri arg0) {
return null;
} @Override
public Uri insert(Uri uri, ContentValues values) {
int result = matcher.match(uri);
switch(result)
{
case INSERT:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getReadableDatabase();
db.insert("person", "id", values);
return uri;
default:
return null;
}
} @Override
public boolean onCreate() {
return false;
} @Override
public Cursor query(Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder) {
int result = matcher.match(uri);
switch(result)
{
case QUERY:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.query("person", null, selection, selectionArgs, null, null, null);
default:
return null;
}
} @Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int result = matcher.match(uri);
switch(result)
{
case UPDATE:
MyDbOpenHelper openHelper = new MyDbOpenHelper(getContext());
SQLiteDatabase db = openHelper.getWritableDatabase();
return db.update("person", values, selection, selectionArgs);
default:
return 0;
}
}}MainActivity.java代码如下
[code=java]
package com.xuyu.application2;import android.support.v7.app.ActionBarActivity;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://com.xuyu.database/delete");
resolver.delete(uri, "name=?", new String[]{"allen"});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是一个ContentPrivider源码再加上一个是另外一个项目的MainActivity代码