1. 程式人生 > >Android四大元件—ContentProvider

Android四大元件—ContentProvider

1.內容提供器簡介

內容提供器(Content Provider)主要用於在不同的應用程式之間實現資料共享的功能, 它提供了一套完整的機制,允許一個程式訪

問另一個程式中的資料,同時還能保證被訪資料 的安全性。目前,使用內容提供器是 Android 實現跨程式共享資料的標準方式。

不同於檔案儲存和 SharedPreferences 儲存中的兩種全域性可讀寫操作模式,內容提供器可 以選擇只對哪一部分資料進行共享,從而

保證我們程式中的隱私資料不會有洩漏的風險。

內容提供器的用法一般有兩種,一種是使用現有的內容提供器來讀取和操作相應程式中 的資料,另一種是建立自己的內容提供器給

我們程式的資料提供外部訪問介面。那麼接下來 我們就一個一個開始學習吧,首先從使用現有的內容提供器開始。

2.建立一個應用用來被訪問資料

1).建立一個類繼承ContentProvide

public class BankBackDoor extends ContentProvider {
    Open open;

    @Override
    public boolean onCreate() {
        Log.e("main","onCreate");
        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {
        Log.e("main","query");
        open=new Open(getContext());
        String[] name=new String[]{"潘宇田"};
        Cursor cursor=open.sqLiteDatabase.rawQuery("select * from lkh where name=?",name);
//        cursor.moveToFirst();
//        ArrayList  arrayList=new ArrayList();
//        if(cursor.moveToNext()){
//        arrayList.add(cursor.getString(2));
        //}

        return cursor;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        Log.e("main","getType");
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        Log.e("main","insert");
        open=new Open(getContext());
        open.sqLiteDatabase.execSQL("insert into lkh(id,name,age) values (2,'潘宇田','18')");
        return null;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
        Log.e("main","delete");

        return 0;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
        Log.e("main","update");
        return 0;
    }
}

2).建立資料庫類:

public class Open extends SQLiteOpenHelper {
    SQLiteDatabase sqLiteDatabase;
    public Open(Context context) {
        super(context, "pyt.db", null, 1);
        sqLiteDatabase=getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table lkh(id integer [not null] [primary key],name text,age text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

3).在清單中註冊Provide:

<provider
android:name="com.zhy.magicviewpager.sample.BankBackDoor"
android:authorities="com.po.oo"
android:exported="true"
>

3.建立另一個應用訪問資料:

1).點選事件操作資料庫:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
//
        ContentResolver resolver=getContentResolver();
        Uri uri=Uri.parse("content://com.po.oo");
        ContentValues values=new ContentValues();
        Cursor cursor=resolver.query(uri,null,null,null,null);
        cursor.moveToFirst();
        if(cursor.moveToNext()){
            String ss=cursor.getString(cursor.getColumnIndex("name"));
            Log.e("main",ss);
        }

    }
});

4.得出結果:

12-15 17:07:59.698 14509-14509/com.example.myapplication E/main: 潘宇田



相關推薦

Android四大元件-ContentProvider

概念: 內容提供器,Android 四大元件之一。 作用: 可以操作非本應用程式的資料,實現跨程序資料共享。 優點: 可以在保證資料的安全性的情況下實現資料跨程序共享。因為contentprovider規範了統一的資料訪問介面。 對底層資料儲存方式抽象,即如果您將底層

Android四大元件ContentProvider

1.內容提供器簡介 內容提供器(Content Provider)主要用於在不同的應用程式之間實現資料共享的功能, 它提供了一套完整的機制,允許一個程式訪 問另一個程式中的資料,同時還能保證被訪資料 的安全性。目前,使用內容提供器是 Android 實現跨程式共享資料的標準

Android四大元件——ContentProvider的增刪改查和優化

前言ContentProvider步驟:創資料庫,寫規則匹配,配置manifests,另一個應用使用其實ContentProvider就是:在一個匹配器中寫入自己寫好的匹配規則,並對外提供寫好的匹配規則供使用,剩下的就是增刪改查的處理細節處理:在增刪改查中的查詢中,是沒有cu

Android四大元件ContentProvider(二)

上節提到的四大元件之ContentProvider的簡單使用,在這篇文章中詳細的介紹其中的一些方法。 1.String getType(Uri uri)方法 首先看看官方對它的解釋: /** * Implement this to handle requests

Android四大元件ContentProvider(一)

1.什麼是ContentProvider? 內容提供程式管理對資料結構化資料集的訪問。它們封裝資料,並提供用於定義資料安全性的機制。內容提供者是連線一個程序中的資料與另一個程序中執行的程式碼的標準介面。 是不同應用程式之間進行資料交換的標準API,以某種Uri的形式對外提供資料,

Android四大元件ContentProvider

關於ContentProvider ContentProvider,被稱為內容提供者,通過Binder向其他元件以及其他應用提供資料。以某種Uri的形式對外提供資料,允許其他應用訪問或修改資料。其他應用程式使用ContentResolver根據Uri去訪問操作

Android四大元件ContentProvider詳解

1.適用場景 1) ContentProvider為儲存和讀取資料提供了統一的介面 2) 使用ContentProvider,應用程式可以實現資料共享 3) android內建的許多資料都是使用ContentProvider形式,供開發者呼叫的(如視訊,音訊,圖片,

Android 四大元件之" ContentProvider "

前言 ContentProvider作為Android的四大元件之一,是屬於需要掌握的基礎知識,可能在我們的應用中,對於Activity和Service這兩個元件用的很常見,瞭解的也很多,但是對ContentProvider所知卻甚少,所以有必要去整理歸納下其中的內容,講講為什麼要用ContentProvid

Android四大元件應用系列——使用ContentProvider實現跨程序通訊

package com.jereh; public class PersonProvider extends ContentProvider { private DbOpenHelper openHelper; private static final UriMatcher

Android四大元件ContentProvider內容提供器

public class MyProvider extends ContentProvider{ public static final int TABLE1_DIR = 0; public static final int TABLE1_ITEM = 1; public s

Android四大元件ContentProvider(內容提供者)

ContentProvider是什麼 ContentProvider是Android中的四大元件之一,主要用於不用應用之間共享資料,通過ContentProvider把應用中的資料共享給其他應用訪問,其他應用可以通過ContentProvider對指定應用中

小談Android四大元件ContentProvider

內容提供者的作用 1.應用程式建立的資料庫預設都是私有的,別的應用程式不可以訪問裡面的資料. 2.如果需要把自己應用程式私有的資料庫暴露給別的使用者增刪改查,就需要使用內容提供者. 3.作用: 一個應用程式訪問另外一個應用程式在硬碟上

Android四大元件ContentProvider-劉志遠-專題視訊課程

Android四大元件之ContentProvider—4971人已學習 課程介紹        本課程向大家講述Android中的四大元件之一ContentProvider(內容提供者)課程收益    學員學習之後,能夠吃透ContentProvier講師介紹    劉志遠

Android四大元件ContentProvider自定義

       ContentProvider 屬於Android應用程式的元件之一,作為應用程式之間唯一的共享資料的途徑,ContentProvider 主要的功能就是儲存並檢索資料以及向其他應用程式提供訪問資料的介面。        讓自己的資料和其他應用程式共享有兩種方

Android四大元件之使用ContentProvider實現資料共享

ContendProvider是不同應用程式之間進行資料交換的標準API,ContentProvider以某種Uri的形式對外提供資料,允許其他應用訪問或修改資料;其他應用程式使用ContentReslover根據Uri去訪問操作指定資料 因為ContendP

Android四大元件——BroadcastReceiver(原理篇)

前言 Android四大元件——BroadcastReceiver(基礎篇)裡面介紹了BroadcastReceiver相關的基礎知識,本文將從Android 8.0原始碼來分析一下廣播的註冊和接收原理。 BroadcastReceiver的註冊 Android系統中Broa

《瞭解Android四大元件 》的補充

Activity View元件是所有UI控制元件、容器控制元件的基類,View元件就是Android應用中使用者實實在在看到的部分。但View元件需要放到容器元件中,或者使用Activity將它顯示出來。如果需要通過某個Activity把指定的View顯示出來,呼叫Activit

瞭解Android四大元件

Activity 用途:Activity是一個應用程式元件,其所有操作都與使用者密切相關,它提供一個螢幕,在此進行使用者互動從而完成某項任務。(是使用者操作的視覺化介面;它為使用者提供了一個完成操作指令的視窗)在一個android應用中,一個Activity通常就是一個單獨的螢幕,它上面

Android 四大元件android:exported 屬性詳解

當我們在用360等檢測軟體掃描應用漏洞時,掃描結果可能歸類為安全漏洞,涉及一個Android:exported屬性,這個屬性究竟是用來幹嘛的呢,詳情見下圖: 因此,查了官方API,學習了一下這個屬性! android:exported 是Android中的四大元件 Ac

android四大元件--使用LocalBroadcast進行應用內資料傳遞

1.區別:本地廣播的傳送和接受,只能在一個程序中。因此在跨程序中的通訊是不能使用的。比如建立了新的程序或者是在不同app之間通訊都是不能使用。 但是在不同的執行緒中是能夠進行傳送和接受資料。因此保證了廣播的安全問題。 2.使用是通過LocalBroadcastManager獲取到獲取例項進行