首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android设备中获取最新联系人列表

如何在android设备中获取最新联系人列表
EN

Stack Overflow用户
提问于 2019-01-23 09:12:12
回答 2查看 1.2K关注 0票数 1

我需要拿出最近在过去24小时内使用和最常用的联系人列表。

我找了很多遍,但没有找到任何办法。我还知道google已经撤销了URI以获得频繁使用的联系人:URI

但是,没有给出这个URI的替代品是什么呢?请告诉我实现以下目标的方法:

  1. 最近24小时内联系的联系人名单。
  2. 获取前3位最常用的联系人。
EN

回答 2

Stack Overflow用户

发布于 2019-01-23 09:26:01

反对CONTENT_FREQUENT_URI以及联系人表中的TIMES_CONTACTEDLAST_TIME_CONTACTED字段的全部要点是阻止应用程序访问您正在寻找的信息。

谷歌现在认为这是敏感的用户信息,并将不允许应用程序获得这一进展。

然而,根据我的经验,我所知道或被我们的用户使用的所有设备似乎仍然允许访问不受欢迎的API,所以如果您需要在明年左右对大多数用户都合适的东西,您仍然可以使用它。

代码应该类似于:

代码语言:javascript
复制
String[] projection = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.LAST_TIME_CONTACTED };

Cursor lastContacted = getContentResolver().query(Contacts.CONTENT_URI, projection, Contacts.LAST_TIME_CONTACTED + " < " + lastDayTimestamp, null, Contacts.LAST_TIME_CONTACTED + " DESC");
DatabaseUtils.dumpCursor(lastContacted);

Cursor mostContacted = getContentResolver().query(Contacts.CONTENT_URI, projection, null, null, Contacts.TIMES_CONTACTED + " DESC");
DatabaseUtils.dumpCursor(mostContacted); // might want to limit this to 3
票数 1
EN

Stack Overflow用户

发布于 2019-01-23 09:24:02

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

ListView listView ;
ArrayList<String> StoreContacts ;
ArrayAdapter<String> arrayAdapter ;
Cursor cursor ;
String name, phonenumber ;
public  static final int RequestPermissionCode  = 1 ;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    listView = (ListView)findViewById(R.id.listview1);

    button = (Button)findViewById(R.id.button1);

    StoreContacts = new ArrayList<String>();

    EnableRuntimePermission();

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

            GetContactsIntoArrayList();

            arrayAdapter = new ArrayAdapter<String>(
                    MainActivity.this,
                    R.layout.contact_items_listview,
                    R.id.textView, StoreContacts
            );

            listView.setAdapter(arrayAdapter);


        }
    });

}

public void GetContactsIntoArrayList(){

    cursor = 
getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
null,null, null, null);

    while (cursor.moveToNext()) {

        name = 
  cursor.getString(cursor.getColumnIndex 
(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAM 
   E));

        phonenumber = 

 cursor.getString(cursor.getColumnIndex 
(ContactsContract.CommonDataKinds.Phone.NUMBER));

        StoreContacts.add(name + " "  + ":" + " " + phonenumber);
    }

    cursor.close();

}

public void EnableRuntimePermission(){

    if (ActivityCompat.shouldShowRequestPermissionRationale(
            MainActivity.this,
            Manifest.permission.READ_CONTACTS))
    {

        Toast.makeText(MainActivity.this,"CONTACTS permission allows us to Access 
CONTACTS app", Toast.LENGTH_LONG).show();

    } else {

        ActivityCompat.requestPermissions(MainActivity.this,new String[]{
                Manifest.permission.READ_CONTACTS}, RequestPermissionCode);

    }
}

@Override
public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

    switch (RC) {

        case RequestPermissionCode:

            if (PResult.length > 0 && PResult[0] == 
PackageManager.PERMISSION_GRANTED) {

                Toast.makeText(MainActivity.this,"Permission Granted, Now your 
application can access CONTACTS.", Toast.LENGTH_LONG).show();

            } else {

                Toast.makeText(MainActivity.this,"Permission Canceled, Now your 
application cannot access CONTACTS.", Toast.LENGTH_LONG).show();

            }
            break;
    }
}


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54323631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档