权限异常。你把android:exported="true" 这个去掉试试。
解决方案 »
- Android平台下如何使用SSL访问服务器
- 编译Android4.0无法通过
- android 2.2和2.3apn拨号问题,难搞
- 如何可以滑动切换+点击切换页面
- 求推荐android 学习的书!!!
- Android Server did not recognize the value of HTTP Header SOAPAction
- ListView无法显示内容
- 新手提问 一般什么时候需要定义一个新类?
- 利用monkeyrunner在PC上开发一款自动化测试工具
- Android中其中一个Activity可以对另一个Activity的xml文件中的EditText设置进行设置吗?
- 自定义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代码