当前位置: 首页 > news >正文

济南网站建设力推搜点网络ok谷歌优化的最佳方案

济南网站建设力推搜点网络ok,谷歌优化的最佳方案,如何建设学校门户网站,企业网站建设博客论坛目录 一、ContentResolver基本用法 如何查询? 如何向表中添加一条数据? 如何更新这条新添加的数据? 如何删除这条数据? 二、读取系统联系人 要想你的APP访问其他应用程序的数据,需要使用内容提供器,下面使…

目录

一、ContentResolver基本用法

        如何查询?

        如何向表中添加一条数据?

        如何更新这条新添加的数据?

        如何删除这条数据?

二、读取系统联系人


        要想你的APP访问其他应用程序的数据,需要使用内容提供器,下面使用现有的内容提供器来读取和操作相应程序中的数据。


一、ContentResolver基本用法

        如果想要访问内容提供器中共享的数据,需要借助ContentResolver类,其提供了一系列方法用于对数据CRUD操作。

        ContentResolver中的增删改查方法接收一个Uri参数,这个参数称为内容URI,为内容提供器中的数据建立了唯一的标识符,主要由两部分组成:authority和path。authority用于对不同的应用程序做区分,一般采用程序包名;path用于对同一应用程序中不同的表做区分,如:某个程序的数据库里存在一张表:table1,这时的内容URI就是com.example.app.provider/table1,标准格式是:content://com.example.app.provider/table1。

        得到内容URI字符串后,将它解析称URI对象才可以作为参数传入,方法如下:

Uri uri = Uri.parse("content://com.example.app.provider/table1")

        只需要调用Uri.parse()方法,就可以将内容URI字符串解析成Uri对象了。

        现在可以使用这个Uri对象来查询table1表中的数据了,代码如下:

Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder
);

        下表对使用的参数作了详细的解释:

 

        如何查询?

         查询完之后仍然是一个Cursor对象,读取的思路仍然是遍历Cursor的所有行,再取出每一行中相应列的数据,代码如下:

  if(cursor!=null){while (cursor.moveToNext()){String column1 = cursor.getString(cursor.getColumnIndex("column1"));int cloumn2 = cursor.getInt(cursor.getColumnIndex("column2"));}cursor.close();}

 

        如何向表中添加一条数据?

代码如下:

ContentValues values = new ContentValues();
values.put("column1","text");
values.put("column2",1);
getContentResolver().insert(uri,values);

 

        如何更新这条新添加的数据?

代码如下:

ContentValues values = new ContentValues();
values.put("column1","");
getContentResolver().update(uri,values,"column1=? and column2 = ?",new String[] {"text","1"});

 

        如何删除这条数据?

代码如下:

getContentResolver().delete(uri,"column2 = ?",new String[] { "1" });

下面通过读取系统联系人来实践一下。

二、读取系统联系人

首先在模拟器里手动添加几个联系人

然后新建一个ContactsTest项目。

修改activity_main.xml代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/contacts_view"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>

 修改MainActivity代码,如下:

        因为READ_CONTACTS属于危险权限,首先处理运行时权限,用户授权之后调用readContacts()方法来读取联系人信息。

        readContacts()方法使用了ContentResolver的query()方法,不过传入的Uri和前面不一样,这是因为ContactsContract.CommonDataKinds.Phone类已经做好了封装,提供了一个CONTENT_URI常量,这个常量就是解析出来的结果。接着将姓名和手机号逐一取出,其各有对应的常量。

public class MainActivity extends AppCompatActivity {ArrayAdapter<String> adapter;List<String> contactsList = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView contactsView = (ListView) findViewById(R.id.contacts_view);adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactsList);contactsView.setAdapter(adapter);if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);}else{readContacts();}}private void readContacts(){Cursor cursor = null;try {
//            查询联系人数据cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);if(cursor != null){while (cursor.moveToNext()){
//                    获取联系人姓名String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//                    获取联系人手机号String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));contactsList.add(displayName + "\n" + number);}adapter.notifyDataSetChanged();}}catch (Exception e){e.printStackTrace();}finally {if(cursor != null){cursor.close();}}}public void onRequestPermissionResult(int requestCode,String[] permissions,int[] grantResults){switch (requestCode){case 1:if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){readContacts();}else{Toast.makeText(this, "你拒绝了权限申请", Toast.LENGTH_SHORT).show();}break;default:}}
}

        最后需要声明读取系统联系人的权限,修改AndroidManifest.xml文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.contactstest"><uses-permission android:name="android.permission.READ_CONTACTS"/>...............

效果如下:

 

http://www.mmbaike.com/news/75969.html

相关文章:

  • 电子商务网站建设方案书seo短视频网页入口引流网站
  • 营销型企业网站建设的基本原则是最近的国际新闻热点
  • 阿里云如何搭建网站沈阳关键词优化价格
  • 互联网公司排名2022前100强合肥百度搜索排名优化
  • 自己做电影网站网站友情链接的好处
  • 网站开发php和ui郑州有没有厉害的seo顾问
  • 用AIDE怎么建设网站站长工具seo综合查询下载
  • 做网站代理商推广产品的方法
  • 有哪些设计网站app百度网站收录
  • 简单网站建设课程网络服务器是指什么
  • 单页面网站卖什么好福州seo技巧培训
  • 床上做受网站买转发链接
  • 昆明航空公司官方网站app开发流程
  • 深圳网站建设g足球世界排名国家最新
  • 专业品牌建设服务口碑好seo都用在哪些网站
  • 哈尔滨正规制作网站公司seo到底是什么
  • 如何搭建公司官网网站优化策划书
  • 做微信商城网站哪家好免费模板
  • 做调查赚钱靠谱的网站有哪些下载班级优化大师app
  • 建设市民中心网站推广互联网推广
  • 设计宝藏资源站友情链接什么意思
  • wordpress 瀑布流ajax新浪博客seo
  • 广告公司做的网站字体侵权优化网站的方法
  • 有做公司网站上海抖音seo公司
  • 网站内页收录突然没了怎么做市场营销和推广
  • 影响网站打开速度的因素亚马逊关键词优化软件
  • 知名品牌策划设计公司移动端关键词排名优化
  • asp.netmvc 做网站佛山优化网站关键词
  • 网络推广优化能有排名吗南宁百度快速优化
  • 二合一收款码免费制作网站哪些行业适合做网络推广