【问题标题】:Reading contact without using activity在不使用活动的情况下读取联系人
【发布时间】:2013-08-13 16:58:25
【问题描述】:

我正在开发一个可以在手机中读取、列出、添加和搜索联系人的库。 我使用 Activity、光标和 managedQuery 完成了它。 但是要拥有一个完整的独立库,我必须在不使用活动的情况下完成它。 是否可以仅通过此 uri 为每个示例提供联系人姓名:“content://contacts/people/id”?如果是,我可以在不使用活动的情况下举一个例子吗? 任何帮助将不胜感激。 非常感谢。

【问题讨论】:

    标签: android android-contacts contactscontract


    【解决方案1】:

    如果您发布一些代码,我可以给您一个更准确的答案,但是如果您要在库中实现一个检索联系人的方法,那么您将始终必须有一个 Context 实例作为此方法的参数。

    试试这样的:

    public Contact readContacts(Context context)
    {
      ContentResolver resolver = context.getContentResolver();
      Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
      ....
    }
    

    然后,您将在使用您的库的应用中调用此方法,如下所示:

    ContactHelper.readContacts(activity);
    

    或者像这样:

    ContactHelper.readContacts(getApplicationContext());
    

    等等……

    我假设您已经拥有所有必需的权限,但不要忘记添加此权限,否则您将无法读取联系人:

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    

    您可以在此处找到有关通过多个代码示例读取联系人的更多信息: https://developer.android.com/training/contacts-provider/retrieve-names.html

    【讨论】:

    • 感谢您的回答。在您的示例中,您仍然使用活动我想知道是否有办法不使用它,以便我可以在 jar 文件中创建我的库??
    • 我发布它的方式是您在库中实现它的方式。为此,您总是需要一个 Context,但问题的解决方案是您的方法需要一个 Context 参数,然后使用您的库的每个人都会为您的方法提供一个 Context,例如一个 Activity。
    猜你喜欢
    • 2016-12-21
    • 2013-11-18
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多