尝试读取设备上的联系人数据时,Intent.getData()为null

时间:2010-08-30 14:45:28

标签: android debugging

我正在使用api 1.6编写我的应用程序。代码在模拟器1.6-2.2上运行得很好。

但是当我尝试在运行2.1 data.getData()的设备上调试它时,返回null。我在AndroidManifest.xml <uses-permission android:name="android.permission.READ_CONTACTS"/>

中有这个

任何人都有任何想法。我是android新手,谢谢。

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

        Button btnTest = (Button) findViewById(R.id.btnTest);
        btnTest.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);

                startActivityForResult(intent, ACTIVITY_PICK_CONTACT);
            }
        });
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case (ACTIVITY_PICK_CONTACT):
            if (resultCode == Activity.RESULT_OK) {
                // This is where it is broke
                            Uri uri = data.getData();

                Intent intent = new Intent(this, PickContactInfo.class);
                intent.putExtra(Keys.CONTACT_URI, uri.toString());
                startActivity(intent);
            }
            break;
        }

    };

1 个答案:

答案 0 :(得分:1)

有几种可能性。

首先,尝试从People.CONTENT_URI切换到Contacts.CONTENT_URI。我没有遇到返回null联系人的问题。这是sample project

其次,确保您选择的联系人是设备本身的联系人(与从Facebook,Exchange等同步的联系人)。旧API仅适用于设备上的联系人。

如果这些都没有帮助,则设备中的固件可能存在错误。在这种情况下,我有兴趣知道这是什么设备。