zoukankan      html  css  js  c++  java
  • 跨程序共享数据,读取联系人信息

    跨程序共享数据,跨进程共享数据

    读取联系人信息

    1.定义ListView

    <?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">
    
        <ListView
            android:id="@+id/contacts_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
         </ListView>
    
    </LinearLayout>
    
    

    2.声明权限AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="demo.jq.com.contactstest">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <!-- 声明权限 -->
        <uses-permission android:name="android.permission.READ_CONTACTS" />
    
    </manifest>
    

    3.处理数据获取与展示

    package demo.jq.com.contactstest;
    
    import android.content.pm.PackageManager;
    import android.database.Cursor;
    import android.provider.ContactsContract;
    import android.support.annotation.NonNull;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.jar.Manifest;
    
    /**
     * @author Jim
     */
    public class MainActivity extends AppCompatActivity {
    
        /**
         * 定义adapter
         */
        ArrayAdapter<String> adapter;
    
        List<String> contactsList = new ArrayList<>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 初始化ListView对象
            ListView contactsView = (ListView) findViewById(R.id.contacts_view);
    
            // 初始化adapter
            adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList);
    
            // 设置listview的适配内容
            contactsView.setAdapter(adapter);
    
            if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
                // 设置权限可读
                ActivityCompat.requestPermissions(this,new String[]{android.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 + "
    " + number);
                    }
    
                    adapter.notifyDataSetChanged();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, int[] grantResults) {
            switch (requestCode) {
                case 1:
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        readContacts();
                    } else {
                        Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT).show();
                    }
                    break;
                default:
    
            }
        }
    
    
    }
    
    
  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/7701066.html
Copyright © 2011-2022 走看看