Android Studio 第三次作业
一.作业要求
1、contentprovider是安卓四大组件之一,请使用其方法类进行数据获取;
2、请自建一个provider,然后在另一个app中使用resolver调用这个provider。
3、本次作业请启用新项目,理论上需要两个APP进行实验。
二.作业内容
1.首先我们要创建两个项目分别是provider和resovler
2.provider的内容为
MainActivity.Java
package com.example.provider;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MyDAO myDAO=new MyDAO(this);} }
MyContentProvider.Java
package com.example.provider;import android.content.ContentProvider; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri;public class MyContentProvider extends ContentProvider {private MyDAO myDAO;public MyContentProvider() {}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {// Implement this to handle requests to delete one or more rows.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic String getType(Uri uri) {// TODO: Implement this to handle requests for the MIME type of the data// at the given URI.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic Uri insert(Uri uri, ContentValues values) {// TODO: Implement this to handle requests to insert a new row.//getContext().getContentResolver().insert(uri, values);return myDAO.DAOinsert(values);}@Overridepublic boolean onCreate() {// TODO: Implement this to initialize your content provider on startup.Context context=getContext();myDAO=new MyDAO(context);return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {// TODO: Implement this to handle query requests from clients.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO: Implement this to handle requests to update one or more rows.throw new UnsupportedOperationException("Not yet implemented");} }
MyDao.Java
package com.example.provider;import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.net.Uri;public class MyDAO {private Context context;private SQLiteDatabase database;public MyDAO(Context context){this.context=context;MyDBhelper dBhelper =new MyDBhelper(context,"cwjDB",null,1);database=dBhelper.getReadableDatabase();}public Uri DAOinsert(ContentValues contentValues){long rowid=database.insert("student",null,contentValues);Uri uri=Uri.parse("content://cwj.provider2/student");Uri inserturi=ContentUris.withAppendedId(uri,rowid);context.getContentResolver().notifyChange(inserturi,null);return inserturi;} }
MyDBhelper.Java
package com.example.provider;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log;import androidx.annotation.Nullable;public class MyDBhelper extends SQLiteOpenHelper {public MyDBhelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);Log.d("cwj","MyDBhelper...");}@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL("create table student(" +"id integer primary key autoincrement,name varchar,age integer)");Log.d("cwj","onCreate...");}@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {Log.d("cwj","onUpgrade...");} }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
3.resovler项目内容为
MainActivity.Java
package com.example.resovler;import androidx.appcompat.app.AppCompatActivity;import android.content.ContentResolver; import android.content.ContentValues; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ContentResolver resolver=getContentResolver();ContentValues values=new ContentValues();values.put("name","cwj");values.put("age",20);Uri uri=Uri.parse("content://cwj.provider2/student");Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {resolver.insert(uri,values);}});} }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="resovler"android:textSize="45dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.526"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.363" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="insert"android:textSize="45dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.555"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.587" /></androidx.constraintlayout.widget.ConstraintLayout>
作业结果:
每点击一次INSERT数据库的student表中就会插入一次数据
代码仓库
resovler: resovler。。
provider: provider。。。
Android Studio 第三次作业相关推荐
- android studio 打包慢,[Android Studio系列(三)]Android Studio 编译、同步慢的解决方法
1 问题 (1) 当项目中引用的第三方模块太多,打开Android Studio的时候就会非常慢,提示一直在解决模块依赖,点击sync按钮同步第三方代码的时候也是巨慢,慢的原因是: 在gradle中引 ...
- 基于Android Studio实现的功能强大的购物商城APP源码,可做Android Studio毕业设计、大作业
Android 购物商城app 完整代码下载地址:基于Android Studio实现的功能强大的购物商城APP源码 实现的功能: 注册 登录 修改密码 重置密码(邮箱验证,考核结束将移除授权码) 商 ...
- android studio 接口方法,Android Studio第三十期 - 介绍几种网络请求方式写法
框架git地址:附(爱一个人就要爱他(loader)的全部~) 请求方式:POST 请求示例{ "verify_info":{ "app":{ "ap ...
- Android studio第四次作业
显示效果: java代码 genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){ public ...
- Android Studio 实验三:水果店
目录 activity_main.xml Activity Fruit和Person类 Fruit Person 运行截图 项目文件 activity_main.xml <?xml versio ...
- Android Studio第三十四期 - git企业级应用命令
1.git status 2.git add -A 3.git commit -m "merger" 4.git pull 5.git push origin master 6.g ...
- Android Studio第三十五期 - 定时器弱引用+Service的写法
代码已经整理好,效果如下图: 图1: 图2: 地址:https://github.com/geeklx/MyApplication/tree/master/p020_timer 转载于:https:/ ...
- 《Android 移动应用基础教程(Android Studio)(第2版)》【课本客观题】+【学习通2023春】【参考答案】
文章目录 超星学习通智能终端软件开发(基于Android Studio环境)章节作业(39) 一 二 三 四 五 六 课本一 课本二 课本三 课本四 课本五 课本六(无) 课本七 课本八 课本九 课本 ...
- 安装与下载 Android studio(以下为处理器是Intel的安装方法,下载前请检查一下自己的CPU为AMD 还是Intel的)
第一步:在浏览器上搜索Android studio,点击进去第一步:在浏览器上搜索Android studio,点击进去 第二步:点击download Android studio 第三步:滑到最下方 ...
最新文章
- taro 重新加载小程序_taro-music一款开源网易云音乐小程序
- java中的io系统详解(转)
- 在Visual Studio的Server Explorer中怎样修改表名
- FreeRTOS任务挂起和恢复
- D3.js、echar.js 前端必备大数据技能
- v8的垃圾回收机制(二)
- 服务器如何修改内存大小,如何限制docker容器的内存大小
- 74HC138(三八译码器)74HC573(锁存器)74HC02(或非门)
- 数据处理之异常值处理
- 研发人员分层及其工作内容划分
- 高仿富途牛牛-组件化(二)-磁力吸附
- org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
- 迅软信息签约安龙基因医药技术构建医药行业防护体
- C++ 类与对象_类的其他成员(常成员,静态成员,友元)
- 中国招聘网站2007春调研报告(from 搜索引擎项目)
- oracle mysql查询速度慢_oracle 根据时间范围查询缓慢问题排查解决
- 45个高频词的一词多义和固定搭配
- 汽车美容快修店如何快速拓客-云上铺汽车管理软件
- 字节跳动EE部门前端面试经历及总结
- postman使用教程(3)--获取token
热门文章
- 推荐一个朋友做的资源网站
- 手机邮箱好处,邮箱格式地址,安全邮箱号是什么样的?
- N2语法汇总(190条)
- 【资料整理】BGL中的BFS算法使用
- python renamer模块_python - 发布自己的模块(脚本) 到pypi.org
- 黑客侦察和隐藏IP地址的方法
- 重塑价值:新一代ITSM平台的建设、咨询与实施
- Linux 网络编程——浅谈 C/S 和 B/S 架构
- MacBook触控板也可以变得更强大——手势增强工具 Better and better
- 原型设计如何直接生成html,使用原型设计工具 Axure RP创建一个web页面框架