- 浏览: 385339 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
ch023 Android ContentProvider(第一部分,单元测试)
- 博客分类:
- FY_Android
--------------------------------------------AndroidManifest.xml----------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch23"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- 单元测试包-->
<uses-library android:name="android.test.runner"/>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 注册ContentProvider -->
<provider android:name=".provider.MyProvider" android:authorities="com.ch23.provider.myprovider"></provider>
</application>
<!-- 单元测试声明 -->
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.ch23"></instrumentation>
</manifest>
--------------------------------------------Layout activity_main.xml-----------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
--------------------------------------------Activity MainActivity.java-----------------------------
package com.ch23;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
--------------------------------------------DB目录 Const.java-----------------------------------
package com.ch23.db;
/*常量类*/
public class Const {
public final static String CONTENTPROVIDER = "com.ch23.provider.myprovider";
/* Uri C ,代表返回多条数据 */
public final static int STU_LIST = 1;
/* Uri D*,代表返回一条数据 */
public final static int STU_DETAIL = 2;
}
--------------------------------------------DB目录 DBHelper.java-------------------------------
package com.ch23.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
*
* 项目名称:com.ch23
* 类名称:DBHelper
* 类描述:数据库操作工具类
* 创建人:方勇
* 创建时间:2012-12-10 下午8:25:47
* Copyright (c) 方勇-版权所有
*/
public class DBHelper {
private static DatabaseHelper databaseHelper;// 数据库定义语言,创建数据库,DDL,定义数据结构
private static SQLiteDatabase db;// 数据库操作对象,DML,数据库操作
private String DATABASE_NAME = "a07.db";
private int DATABASE_VERSION = 1;// 数据库版本,必须赋值
private Context context;// 定义一个上下文对象
/* 构造方法 */
public DBHelper(Context context) {
this.context = context;
}
/* 打开数据库的方法 */
public DBHelper open() {
databaseHelper = new DatabaseHelper(context);
db = databaseHelper.getWritableDatabase();
return this;
}
// 关闭数据库
public void close() {
db.close();
databaseHelper.close();
}
/* 插入数据 */
public long insert(String tableName, ContentValues values) {
return db.insert(tableName, null, values);
}
/* 删除数据 */
public boolean delete(String tableName, String whereClause,
String[] whereArgs) {
return db.delete(tableName, whereClause, whereArgs) > 0;
}
/* 更新数据 */
public boolean update(String tableName, ContentValues values,
String whereClause, String[] whereArgs) {
return db.update(tableName, values, whereClause, whereArgs) > 0;
}
/* 取得一个列表 */
public Cursor findList(String tableName, String[] columns,
String selection, String[] selectionArgs, String groupBy,
String having, String OrderBy) {
return db.query(tableName, columns, selection, selectionArgs, groupBy,
having, OrderBy);
}
/* 取得单行记录 */
public Cursor findInfo(String tableName, String[] columns,
String selection, String[] selectionArgs, String groupBy,
String having, String orderBy) {
Cursor cursor = db.query(tableName, columns, selection, selectionArgs,
groupBy, having, orderBy);
while (cursor.moveToNext()) {
cursor.moveToFirst();
}
return cursor;
}
/* 执行sql语句 */
public void executeSql(String sql) {
db.execSQL(sql);
}
/* SQLiteopenHelper是一个抽象类,来管理数据库的创建和版本的管理 */
private class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// 创建表结构
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists stu(id integer primary key,name text)");
db.execSQL("insert into stu values(1,'a1')");
db.execSQL("insert into stu values(2,'a2')");
db.execSQL("insert into stu values(3,'a3')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
--------------------------------------------provider目录 MyProvider.java-----------------------
package com.ch23.provider;
import com.ch23.db.Const;
import com.ch23.db.DBHelper;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
/**
*
* 项目名称:com.ch23
* 类名称:MyProvider
* 类描述:对外应用程序提供数据
* 创建人:方勇
* 创建时间:2012-12-10 下午8:26:09
* Copyright (c) 方勇-版权所有
*/
public class MyProvider extends ContentProvider {
/* 数据库操作 */
private DBHelper dbHelper;
/* 匹配工具类 */
private static final UriMatcher MATCHER = new UriMatcher(
UriMatcher.NO_MATCH);
/* 初始化数据,匹配工具类 */
static {
MATCHER.addURI(Const.CONTENTPROVIDER, "stu", Const.STU_LIST);
MATCHER.addURI(Const.CONTENTPROVIDER, "stu/#", Const.STU_DETAIL);
}
@Override
public boolean onCreate() {
dbHelper = new DBHelper(this.getContext());
/* 打开数据库 */
dbHelper.open();
return false;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
/* 匹配URI,是C还是D */
switch (MATCHER.match(uri)) {
/*多条记录*/
case Const.STU_LIST:
return dbHelper.findList("stu", null, null, null, null, null, null);
case Const.STU_DETAIL:
long id = ContentUris.parseId(uri);
String where =" id="+ id;
//where+= " and "+selection;
return dbHelper.findList("stu", null, where, null, null, null, null);
default:
throw new IllegalArgumentException("uri error"+uri.toString());
}
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return 0;
}
}
--------------------------------------------provider目录 Test.java-------------------------------
package com.ch23.provider;
import com.ch23.db.Const;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;
/*单元测试*/
public class Test extends AndroidTestCase {
public void testQuery(){
/*取数据对象*/
ContentResolver resolver = this.getContext().getContentResolver();
/*查询所有的数据*/
Uri uri = Uri.parse("content://"+Const.CONTENTPROVIDER+"/stuss");
/*取数据*/
Cursor cursor = resolver.query(uri, new String[]{"id","name"},null, null, null);
while(cursor.moveToNext()){
System.out.println("name:"+cursor.getString(cursor.getColumnIndex("name")));
}
}
}
--------------------------------------------结果----------------------------------------------------
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2414效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3880效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2621效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2443activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1844strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 717显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 948Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1083红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3203---------------------------- ...
相关推荐
"CH341 Android代码"这个标题暗示了我们即将探讨的是与Android应用程序开发相关的源代码,可能是一个项目、一个库或者一个工具的实现。在这个场景中,CH341可能是项目代号或者是某个硬件接口(如CH341芯片,常用于...
在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享数据。"跨应用数据源ContentProvider"这一主题,正是围绕如何实现不同应用程序之间的数据交换展开的。ContentProvider提供了标准化的接口,...
《Android SDK 范例大全》是针对Android开发者的一份宝贵资源,主要涵盖了SDK中的第四章和第五章的实例代码。这份压缩包包含了两个部分,分别是CH04和CH05,它们代表了Android开发中两个关键的学习阶段。 CH04部分...
1. **Android开发基础**(ch_01android开发基础.ppt):这部分内容通常会介绍Android平台的概述,包括Android系统架构、开发环境的搭建(如安装Android Studio和SDK)、以及编写第一个Hello World应用程序。...
- Hello, World程序:通常在第一章,开发者会学习编写第一个简单的Android应用,了解基本的布局和控件使用。 2. **UI设计** (ch11, ch24) - 布局管理器:包括LinearLayout、RelativeLayout、ConstraintLayout等,...
源码ch2-ch6”提供了一系列从第二章到第六章的源码示例,旨在帮助开发者深入理解和实践SDK中的各种功能和API。 首先,让我们探讨一下SDK中的核心组件和概念: 1. **AndroidManifest.xml**:这是每个Android应用的...
《Android SDK开发范例大全(第二版)CH09》是一个关于Android应用程序开发的资源压缩包,主要聚焦在SDK的第九章内容。Android SDK是Android应用开发者的重要工具集,它包含了构建、测试和调试Android应用所需的所有...
同时,编写单元测试和集成测试以确保应用的质量。 8. **性能优化**: 开发过程中,要关注内存占用、电量消耗、启动速度等性能指标。通过优化代码、减少不必要的资源加载、使用懒加载策略等手段提高应用效率。 9. ...
源码ch04-06涵盖了书中的第四至第六章,这部分内容通常会涉及Android开发的基础知识,包括用户界面(UI)设计、数据存储以及网络通信等关键主题。 在第四章中,我们可能会学习到Android应用程序的基本架构,比如...
《Android Ophone开发完全讲义源码Ch12》是一份深入探讨Android Ophone平台开发的教程资料,其中包含了第十二章的完整源代码。这一章的焦点可能集中在特定的开发主题上,如应用程序框架、用户界面设计、系统服务集成...
《Android SDK范例开发大全 第3版 源代码 CH3》是针对Android开发者的一份珍贵资源,它包含了第三章的全部源代码示例。这个压缩包旨在帮助开发者深入理解和应用Android SDK的各种功能,通过实际操作来提升技能。在本...
《Android Ophone开发完全讲义源码》涵盖了从基础到进阶的Android应用程序开发知识,主要涉及了第2章至第8章的内容。这个压缩包包含的子文件按章节顺序排列,分别是ch02、ch07、ch06、ch04、ch02(可能是重复或错误...
《Android SDK范例开发大全 第3版 源代码 CH8》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码对应的是书中的第八章...
1. **系统架构**:Android Ophone与标准Android系统在架构上的异同,包括应用程序框架、库和运行时环境以及硬件抽象层的定制化部分。 2. **SDK工具**:了解用于开发Ophone应用的SDK工具,如Eclipse IDE、ADT插件、...
《Android SDK开发范例大全(第二版)CH06》是一个关于Android开发的章节资源,主要聚焦于SDK的使用和实战技巧。这个压缩包可能包含了该章节的所有代码示例、讲解文档和其他相关材料,帮助开发者深入理解Android应用...
《Android SDK开发范例大全(第二版)CH03》是针对Android应用程序开发的一本详尽教程,由清华大学出版社出版。这本书的第三章涵盖了Android SDK中的关键知识点,旨在帮助开发者深入理解和实践Android应用的构建过程。...
4. **Java编程基础**:Android应用主要使用Java语言编写,因此书中的第一章通常会回顾Java基本语法,包括类、对象、异常处理、集合框架等内容,为后续的Android开发打下坚实基础。 5. **Android应用结构**:讲解...
《疯狂Android讲义(第2版)》是李刚老师撰写的一本深入讲解Android开发的经典教程,这本书以其详实的内容和实战导向深受开发者喜爱。在第2章中,作者主要探讨了Android的基础知识和核心概念,为后续章节的学习打下...
1. **ch02**:此章节主要介绍Android的基础环境搭建,包括安装Android Studio、配置开发环境、理解Android项目结构以及创建第一个Hello World应用。这部分内容是初学者入门的关键,讲解了如何启动IDE、设置AVD...
1. **CH08**: 这部分可能涵盖了第八章的内容,通常涉及到Android的多媒体处理,可能包括音频、视频的播放和录制,以及图像处理。开发者可能会学到如何使用`MediaPlayer`、`Camera` API和`ExoPlayer`库进行多媒体操作...