Android学习笔记之ContentProvider

读取其他应用程序共享的数据

以下示例为读取联系人信息

package com.jiahemeikang.helloandroid;

import com.jiahemikang.service.EchoService;
import com.jiahemikang.service.EchoService.EchoServiceBingder;
import com.jikexuyua.broadcastreceiver.MyBC;

import android.os.Bundle;
import android.os.IBinder;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener,ServiceConnection{

    private TextView tvResult ;
    private Intent serviceIntent;
    private Button btnStarAty1;
    private Button btnStarService;
    private Button btnStopService; 

    private Button btnBingService;
    private Button btnUnBingService;
    private Button btnGetNum;
    private Button btnbroadcast;
    private Button regbroadcastButton;
    private Button btnunregbroadcastButton;
    public EchoService echoService = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        serviceIntent = new Intent(this,EchoService.class);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvResult = (TextView)findViewById(R.id.tvResult);

        btnStarAty1= (Button)findViewById(R.id.btnStartAty1);
        btnStarService= (Button)findViewById(R.id.btnStartService);
        btnStopService= (Button)findViewById(R.id.btnStopService);

        btnStarService.setOnClickListener(this);
        btnStopService.setOnClickListener(this);

        btnBingService= (Button)findViewById(R.id.bingdingservice);
        btnUnBingService= (Button)findViewById(R.id.unbingdingservice);
        btnBingService.setOnClickListener(this);
        btnUnBingService.setOnClickListener(this);

        btnGetNum= (Button)findViewById(R.id.btnGetNum);
        btnGetNum.setOnClickListener(this);

        btnbroadcast= (Button)findViewById(R.id.btnbroadcast);
        btnbroadcast.setOnClickListener(this);

        regbroadcastButton= (Button)findViewById(R.id.btnregbroadcast);
        regbroadcastButton.setOnClickListener(this);
        btnunregbroadcastButton= (Button)findViewById(R.id.btnunregbroadcast);
        btnunregbroadcastButton.setOnClickListener(this);

        btnStarAty1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){

                Intent i = new Intent(MainActivity.this,Aty1.class);
                i.putExtra("txt","Hello aty1");
                startActivity(i);
                startActivityForResult(i,0);
            }
        });
        Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext()) {
            String _strName =cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            System.out.println(">>>>>>>>>>>>>>>"+_strName);
        }
    }

    @Override
    protected void onActivityResult(int a,int b ,Intent i){

        if (i!=null) {
            String result = i.getStringExtra("result");

            tvResult.setText(result);
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private  final MyBC myBC = new MyBC();
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btnStartService:
            startService(serviceIntent);
            break;
        case R.id.btnStopService:
            stopService(serviceIntent);
            break;
        case R.id.bingdingservice:
            bindService(serviceIntent,this,Context.BIND_AUTO_CREATE);
            break;
        case R.id.unbingdingservice:
            unbindService(this);
            echoService =null;
            break;
        case R.id.btnGetNum:
            if (echoService!=null) {
                System.out.print("当前服务的 数字为"+echoService.getCountNum());
            }
            break;
        case R.id.btnbroadcast:
            Intent i = new Intent(MyBC.ACTION);
            i.putExtra("txt", "消息");
            sendBroadcast(i);
            break;
        case R.id.btnregbroadcast:
            registerReceiver(myBC, new IntentFilter(MyBC.ACTION));
            break;
        case R.id.btnunregbroadcast:
            unregisterReceiver(myBC);
            break;
        default:
            break;
        }
    }

    @Override
    public void onServiceConnected(ComponentName arg0, IBinder binder) {
        System.out.println("onServiceConnected");
        echoService = ((EchoService.EchoServiceBingder)binder).getService();

    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        // TODO Auto-generated method stub

    }

    //onStart

}

加入读取联系人权限

最后结果

时间: 2024-10-13 00:12:01

Android学习笔记之ContentProvider的相关文章

Android 学习笔记之ContentProvider实现数据共享....

PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是可以开始对项目进行着手操作了...学的东西还是很少,还要继续努力啊...搞定Android的网络通信后就可以正式的进入项目开发了...不说废话了... 学习内容: 1.使用ContentProvider存储数据 2.操作联系人的ContentProvider... 3.多媒体信息的ContentPr

udacity android 学习笔记: lesson 4 part b

udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八 声明:本文採用下面协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/master/Mar

Android学习笔记(四八):提供自己的Content Provider

在上一次的学习中,采用了原生的内容提供者Contact,Contact有多层映射关系,比较复杂,并非作为小例子的好选择,在本次学习中,我们将学习如何建立Content Provider,并通过Uri进行增删改查.如果应用的数据只需自己使用,并不需要content provider,相反避免这样做,可直接访问数据:但是若希望数据可以被其他应用访问,创建content provider就是常规手段. 再谈Content Provider的Uri 在上一次学习中,我们谈到了Uri的格式.现在已cont

Android学习笔记(四九):通过Content Provider访问数据

在上次笔记中,我们编写了自己的Provider,这次笔记,我们将通过Content Provider的Uri接口对数据进行访问,重写Android学习笔记(四二)中例子.在这里我们不在充分描述相关UI如何编写,可以到笔记(四二)中详细查看,重点讲述如何实现数据的访问. 读取信息 读取信息方式,在笔记(四七)中已经介绍,代码如下 private voidread(){     /* 通过managedQuery读取,第1参数表示URI, 第2参数表示所需读取的信息,第3个参数是限制条件,类似SQL

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在

udacity android学习笔记: lesson 3

udacity android学习笔记: lesson 3 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/an

【转】Pro Android学习笔记(七):了解Content Provider(下上)

我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,author,created_date和modified_date几列.我们通过一个名为BookProvider的内容提供者将数据源运行封装,并对外提供增删改查的接口. 首先:定义Content Provider的结构 创建一个Provider,我们首先需要定义好这个provider的结构.通过consta

Android学习笔记(五三):服务Service(下)- Remote Service

之前所谈的Service属于Local Service,即Service和Client在同一进程内(即同一application内),Service的生命周期服从进程的生命周期.在实际应用上,有时希望Service作为后台服务,不仅被同一进程内的activity使用,也可被其他进程所使用,针对这种情况,需要采用bindService,也就是Remote Service的方式. 在Android中,不同app属不同进程(process),进程是安全策略的边界,一个进程不能访问其他进程的存储(例如采

Android学习笔记-----------内容提供者

Android学习笔记-----------内容提供者 简介 内容提供者主要用于在不同的程序之间实现数据共享的功能;一个程序想要访问其他程序种由内容提供者提供的数据,必须依赖于contentresolver这个类的实例,可以通过getContentResolver()这个方法来获取这个类的实例;这个类提供有query(),insert(),update(),delete()等方法来操作数据这些方法都需要提供个Uri类型的参数,这个Uri对应的就是你需要操作的数据引用.一个uri主要由以以下几个部