• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > ContentProvider域名替换小工具,contentprovider域名

ContentProvider域名替换小工具,contentprovider域名

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了contentprovider,contentprovider详解,contentprovider实例,安卓contentprovider,no content provider等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

ContentProvider域名替换小工具,contentprovider域名


开发项目域名想怎么换就怎么换,就是这么任性!

这是一个很有意思的小工具!

这是一个方便开发人员和测试人员的小工具!!

吐槽:

一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时,线上包和测试包不可兼得~总是在 卸载、安装、卸载、安装。。。的循环操作。很是麻烦,而且另外一个不得不正视的问题就是:只要跟服务端人员进行联调时,就得修改项目中的测试域名,重新打包,也是够麻烦的。最近报名了公司的一个服务,就不得不使用线上包了,被逼无奈想起了这个小设计。

原理:

使用ContentProvider数据共享~

展示图:

 

 

 设计思路及源码解析:

 1.前期准备

a.ContentProvider在android中的作用是对外共享数据, 也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查。

当应用需要通过ContentProvider对外共享数据时,第一步需要继承ContentProvider并重写下面方法:

 

public class PersonContentProvider extends ContentProvider{
    public boolean onCreate()
    public Uri insert(Uri uri, ContentValues values)
    public int delete(Uri uri, String selection, String[] selectionArgs)
    public int update(Uri uri, ContentValues values, String selection,         String[] selectionArgs)
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
    public String getType(Uri uri)
}    

 

b.第二步需要在AndroidManifest.xml使用对该ContentProvider进行配置,为了能让其他应用找到该ContentProvider ,ContentProvider采用了authorities(主机名/域名)对它进行唯一标识,你可以把ContentProvider看作是一个网 站(想想,网站也是提供数据者),authorities 就是他的域名

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xc1217.contentprovider">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activity.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".activity.UrlListActivity"
android:theme="@style/AppTheme.NoActionBar">
</activity>

<provider android:name=".db.MyContentProvider"
android:authorities="com.xc1217.contentprovider.myprovider"
android:exported="true"/>
</application>

</manifest>
2.数据库设计
/**
 * Created by ding on 2016/11/15.
 */
public class DBOpenHelper extends SQLiteOpenHelper {
    private static final String DBNAME = "1217provider.db"; //数据库名称
    private static final int DBVER = 1;//数据库版本

    public DBOpenHelper(Context context) {
        super(context, DBNAME, null, DBVER);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // id 主键id,  url 路径   selected 1 选中,0 未选中
        String sql = "CREATE TABLE student (id integer primary key autoincrement, url varchar(500), selected int)";
        String sql2 = "CREATE TABLE coach (id integer primary key autoincrement, url varchar(500), selected int)";
        db.execSQL(sql);//执行有更改的sql语句
        db.execSQL(sql2);
        initDb(db);
    }

    private void initDb(SQLiteDatabase db) {
        String sql = "INSERT INTO student VALUES (1,'http://www.1217.com/', 0)";
        String sq2 = "INSERT INTO student VALUES (2,'http://www.1217.com/', 1)";
        String sq3 = "INSERT INTO student VALUES (3,'http://www.1217.com/', 0)";
        String sq4 = "INSERT INTO student VALUES (4,'http://www.1217.com/', 0)";
        db.execSQL(sql);
        db.execSQL(sq2);
        db.execSQL(sq3);
        db.execSQL(sq4);
        initAddDbCoach(db);
    }

    private void initAddDbCoach(SQLiteDatabase db) {
        String sql = "INSERT INTO coach VALUES (1,'http://www.1217.com/', 0)";
        String sq2 = "INSERT INTO coach VALUES (2,'http://www.1217.com/', 1)";
        String sq3 = "INSERT INTO coach VALUES (3,'http://www.1217.com/', 0)";
        String sq4 = "INSERT INTO coach VALUES (4,'http://www.1217.com/', 0)";
        db.execSQL(sql);
        db.execSQL(sq2);
        db.execSQL(sq3);
        db.execSQL(sq4);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
        db.execSQL("DROP TABLE IF EXISTS student");
        db.execSQL("DROP TABLE IF EXISTS coach");
        onCreate(db);
    }

}

 

3.继承ContentProvider并重写方法

 

/**
 * Created by ding on 2016/11/15.
 */
public class MyContentProvider extends ContentProvider {
    private DBOpenHelper dbOpenHelper;
    //常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码
    private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
    private static final int STUDENTS = 1;
    private static final int STUDENT = 2;
    private static final int COACHS = 3;
    private static final int COACH = 4;

    static {
        //如果match()方法匹配content://com.xc1217.contentprovider.myprovider/student路径,返回匹配码为1
        MATCHER.addURI("com.xc1217.contentprovider.myprovider", "student", STUDENTS);
        //如果match()方法匹配content://com.xc1217.contentprovider.myprovider/student/123路径,返回匹配码为2
        MATCHER.addURI("com.xc1217.contentprovider.m



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 使用ContentProvider访问非数据库数据
  • Android之ContentProvider数据存储,contentprovider
  • ContentProvider域名替换小工具,contentprovider域名
  • ContentProvider中央档案馆,以及获取联系人电话的示例,contentprovider
  • (试笔)一、Android四大框架之ContentProvider的学习与运用,实现SQLite的增删改查。,安卓sqlite增删改查
  • Android中ContentProvider组件数据共享
  • 安卓第十四天笔记-内容提供者(ContentProvider),contentprovider

相关文章

  • 2017-05-26Android之SQLite数据存储,androidsqlite
  • 2017-05-26使用WakeLock使Android应用程序保持后台唤醒,wakelockandroid
  • 2017-05-26ViewPager结合Fragment进行无限滑动,viewpagerfragment
  • 2017-05-26小明学习Linux运维实战演练
  • 2017-05-26Shell 下求两个文件交集、并集和差集的办法
  • 2017-05-26硅谷社交6--添加联系人--发送添加好友邀请,硅谷6--
  • 2017-05-26Android——Listview不用notifydatasetchanged更新数据的方法,androidlistview更新
  • 2017-05-26安卓开源项目周报0104,安卓开源项目0104
  • 2017-05-26Android下雪动画的实现
  • 2017-05-26json反序列化把空字符串转为null

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 3.4 TouchListener PK OnTouchEvent + 多点触碰
    • 整理几篇比较好的AndroidUI动画开发文章,几篇androidui
    • Android程序中--不能改变的事情,android程序--改变
    • LruCache原理解析,lrucache解析
    • Android 的系统架构,Android系统架构
    • 利用SQL实现简单的分布式锁
    • 【React Native开发】React Native控件之ToolbarAndroid工具栏控件讲解以及使用(15)
    • 安卓GreenDao框架一些进阶用法整理,安卓greendao
    • Android7.0 Phone应用源码分析(三) phone拒接流程分析,android7.0拒接
    • Atitit.android js 的键盘按键检测Back键Home键和Menu键事件,atitit.androidmenu

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有