java - 无法使用联系人选择器

标签 java android

我是 android 编程的新手。 我无法从我的 Activity 中调用联系人选择器。 我引用了很多教程,相应地格式化了我的代码,但没有结果。

MainActivity.java 的代码是:-

    package com.example.intents;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends Activity {


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void invokeForRes(View view)
    {
        Intent in=new Intent(Intent.ACTION_PICK,Contact.Contacts.CONTENT_URI);

        startActivityForResult(in, 1);
    }

}

请帮帮我...... 提前谢谢你。

最佳答案

使用 ContactsContract.Contacts.CONTENT_URI,而不是 Contact.Contacts.CONTENT_URI。后者是 Android 1.x 联系人提供程序,在 2009 年底发布的 Android 2.0 中被 ContactsContract 取代。

/***
  Copyright (c) 2008-2012 CommonsWare, LLC
  Licensed under the Apache License, Version 2.0 (the "License"); you may not
  use this file except in compliance with the License. You may obtain   a copy
  of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
  by applicable law or agreed to in writing, software distributed under the
  License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS
  OF ANY KIND, either express or implied. See the License for the specific
  language governing permissions and limitations under the License.

  From _The Busy Coder's Guide to Android Development_
    http://commonsware.com/Android
 */

package com.commonsware.android.rotation.bundle;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;

public class RotationBundleDemo extends Activity {
  static final int PICK_REQUEST=1337;
  Button viewButton=null;
  Uri contact=null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    viewButton=(Button)findViewById(R.id.view);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode,
                                  Intent data) {
    if (requestCode == PICK_REQUEST) {
      if (resultCode == RESULT_OK) {
        contact=data.getData();
        viewButton.setEnabled(true);
      }
    }
  }

  public void pickContact(View v) {
    Intent i=
        new Intent(Intent.ACTION_PICK,
                   ContactsContract.Contacts.CONTENT_URI);

    startActivityForResult(i, PICK_REQUEST);
  }

  public void viewContact(View v) {
    startActivity(new Intent(Intent.ACTION_VIEW, contact));
  }

  @Override
  protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    if (contact != null) {
      outState.putParcelable("contact", contact);
    }
  }

  @Override
  protected void onRestoreInstanceState(Bundle state) {
    super.onRestoreInstanceState(state);

    contact=state.getParcelable("contact");
    viewButton.setEnabled(contact != null);
  }
}

(来自 this sample project)

关于java - 无法使用联系人选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823905/

相关文章:

java - 如何使用 Selenium RC/Java 以编程方式删除多域 cookie

android - NFC:在应用程序启动时读取

android - 返回到 android 上的 Activity 时刷新 ListView

android - 如何使用 Flutter/Dart 在设备之间发送和接收数据?

Android 蓝牙快速设备发现

java - 查询解析用户数据

java - Java Composite 的层次结构问题

java - Hibernate 无法创建表 hibernate_sequences

java - java 代码中超出最大打开游标数异常

java - 如何在 docker run 期间加载自定义 xml 文件?