Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用操作\编辑和传递查找\键启动活动会导致NumberFormatException_Android - Fatal编程技术网

Android 使用操作\编辑和传递查找\键启动活动会导致NumberFormatException

Android 使用操作\编辑和传递查找\键启动活动会导致NumberFormatException,android,Android,我正在尝试从我的应用程序中添加android联系人。为此,我获取所有数据并通过intent传递 我要做的是,当插入时,它会打开“添加联系人”屏幕,用户可以对其进行编辑,所以我尝试使用“操作\编辑” public void addNewContactToDevice() { ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

我正在尝试从我的应用程序中添加android联系人。为此,我获取所有数据并通过intent传递

我要做的是,当插入时,它会打开“添加联系人”屏幕,用户可以对其进行编辑,所以我尝试使用“操作\编辑”

public void addNewContactToDevice() 
    {   
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
        int rawContactInsertIndex = ops.size();
        ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
            .withValue(RawContacts.ACCOUNT_TYPE, null)
            .withValue(RawContacts.ACCOUNT_NAME, null)
            .build());
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
            .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
            .withValue(StructuredName.GIVEN_NAME, person.getName())
            .withValue(StructuredName.FAMILY_NAME, person.getLastName())
            .build());  
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
            .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
            .withValue(Phone.NUMBER, person.getPhone())
            .withValue(Phone.TYPE, Phone.TYPE_MOBILE)                
            .build());

        try 
        {
            ((Panel)activity).getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
            Cursor contactsCursor = activity.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                    new String[] {ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID}, 
                    ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?" , 
                    new String[] { PhoneNumberUtils.formatNumber(individualSelected.getPhone()) }, null);

            contactsCursor.moveToFirst();

            String androidContactId = contactsCursor.getString(contactsCursor.getColumnIndex(LOOKUP_KEY));

            Intent intent = new Intent(Intent.ACTION_EDIT);
            intent.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + androidContactId));
            ((Panel)activity).startActivityForResult(intent, 2);
        } 
        catch (RemoteException e) 
        {
            e.printStackTrace();
        } 
        catch (OperationApplicationException e) 
        {
            e.printStackTrace();
        }   

    }

我找到了解决方案,而不是将其传递给setData方法:

intent.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + androidContactId));
我应该通过这个:

Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookup_key);
Uri res = ContactsContract.Contacts.lookupContact(activity.getContentResolver(), lookupUri);
在setData()方法中,我传递变量res,这是一个URI类型



这对我帮助很大

对不起。我错过了密码。我使用的正确操作是action\u EDIT。尝试这个简单的Intent I=新Intent(Intent.action\u INSERT\u或\u EDIT);i、 setType(联系人合同联系人内容项目类型);i、 putExtra(插入.NAME,“TESTTEST”);i、 putExtra(插入电话,“209384”);星触觉(i);如果可以,请检查intent.setData()中的contact URI.paarse()方法。我以前也是这样做的。我改为另一种方式,因为我想在屏幕的第二个字段中插入LastName,而最后一个选项不提供该选项。我更新了错误日志。
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookup_key);
Uri res = ContactsContract.Contacts.lookupContact(activity.getContentResolver(), lookupUri);