1. 程式人生 > >Android四大元件應用系列——使用ContentProvider實現跨程序通訊

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

package com.jereh;

public class PersonProvider extends ContentProvider {

    private DbOpenHelper openHelper;
    private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
    private static final int PERSONS = 1;
    private static final int PERSON = 2;
    static{
        MATCHER.addURI(
"com.jereh.providers.personprovider", "person", PERSONS); //* 根據pesonid來刪除記錄 MATCHER.addURI("com.jereh.providers.personprovider", "person/#", PERSON); } @Override public boolean onCreate() { openHelper = new DbOpenHelper(this.getContext()); return false
; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteDatabase sqLiteDatabase = openHelper.getReadableDatabase(); switch (MATCHER.match(uri)) { case 1: return
sqLiteDatabase.query("person", projection, selection, selectionArgs, null, null, sortOrder); case 2: long rowid = ContentUris.parseId(uri); String where = "personid="+rowid; if(selection != null && "".equals(selection.trim())){ where = selection+"and"+where; } return sqLiteDatabase.query("person", projection, where, selectionArgs, null, null, sortOrder); } return null; } @Override public String getType(Uri uri) { switch (MATCHER.match(uri)) { case 1: return "vnd.android.cursor.dir/person"; case 2: return "vnd.android.cursor.item/person"; } return null; } @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase sqLiteDatabase = openHelper.getWritableDatabase(); switch (MATCHER.match(uri)) { case 1: long rowid = sqLiteDatabase.insert("person", "name", values); return ContentUris.withAppendedId(uri, rowid); default: break; } return null; } //* 刪除特定personid行的記錄 @Override public int delete(Uri uri, String selection, String[] selectionArgs) { SQLiteDatabase sqLiteDatabase = openHelper.getWritableDatabase(); switch (MATCHER.match(uri)) { case 1: return sqLiteDatabase.delete("person", selection, selectionArgs); case 2: long rowid = ContentUris.parseId(uri); String where = "personid="+rowid; if(selection != null && "".equals(selection.trim())){ where = selection+"and"+where; } return sqLiteDatabase.delete("person", where, selectionArgs); } return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { SQLiteDatabase sqLiteDatabase = openHelper.getWritableDatabase(); switch (MATCHER.match(uri)) { case 1: return sqLiteDatabase.update("person", values, selection, selectionArgs); case 2: long rowid = ContentUris.parseId(uri); String where = "personid="+rowid; if(selection != null && "".equals(selection.trim())){ where = selection+"and"+where; } return sqLiteDatabase.update("person", values, where, selectionArgs); } return 0; } }

相關推薦

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

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

Android四大元件應用系列5——使用AIDL實現程序呼叫Service

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

Android四大元件應用系列——Activity與Service互動實現APK下載

private Thread downloadThread; private void startDownload(){ downloadThread=new Thread(new Runnable() { @Override public void run

Android四大元件應用系列——使用BroadcastReceiver和Service實現倒計時

public class ClockActivity extends Activity { private TextView tvClock; public static final String CLOCK_ACTION="com.jereh.Clock_Action";

Android四大元件應用系列——實現電話攔截和電話錄音

public class ListenPhoneService extends Service { private AudioManager mAudioManager; private TelephonyManager tm; public ListenPhoneSe

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

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

Android使用AIDL實現程序通訊(IPC)

前言:在還沒有做任何一件事情之前,千萬不要覺得這件事情很難,因為還沒有開始做內心就已經對這件事情產生了恐懼,這將會阻止你的進步,也許當你動手開始做了這件事後發現其實並不是很難。 一、 AIDL概述 含義:AIDL(Android Interface Defi

android原始碼中採用Unix Domain Socket程序通訊

      今天看android原始碼Zygote程序啟動流程,無意間發現使用了一種檔案描述符作為跨程序通訊的地址,於是仔細研究了一下:  從字面來理解是傳統的Socket使用,但個人覺得不應該是,特地找資料學習了一下,下面的介紹比較詳細到位。又進一步瞭解一下,使用的其實是

使用AIDL方式啟動Service 實現程序通訊

建立aidl檔案 注意:aidl檔案中可以引用其它aidl檔案中定義的介面,但是不能夠引用java類檔案中 定義的介面。建立時在Project模式在,選中src/main資料夾,new->adil檔案新建的aidl 檔案需要make才能編譯生 // MusicAidl

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

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

Android--四大元件之BroadCastReceiver(生命週期、實現原理及使用等)

####1. BroadCastReceiver是什麼? ####2. 廣播型別 ######1). 有序廣播 ######2). 無序廣播 ####3. 生命週期 ####4. 實現原理 ####5. 使用方法 ####6. 許可權問題(安全性) ####7. LocalBroad

Android四大元件ContentProvider(二)

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

Android四大元件ContentProvider(一)

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

Android四大元件-ContentProvider

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

Android四大元件之BroadcastReceiver應用詳解

今天我們來講一下Android中BroadcastReceiver的相關知識。 BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和應用中的廣播。 在Android系統中,廣播體現在方方面面,例如當開機完成後系統會產生一條廣播,接收到這條廣播就能實

Android四大元件ContentProvider

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

Android四大元件ContentProvider詳解

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

android 四大元件service 音樂播放器的實現

新建立一個Android工程《音樂播放器》,包名:com.itheima.musicPlayer。 在res目錄下新建一個資料夾raw(名字必須為raw,約定大於配置的原則),然後在raw目錄中拷貝進一個音樂檔案,注意檔名必須遵循Android資原始檔的命名

Android 四大元件之" ContentProvider "

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

Android四大元件ContentProvider

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