如何才能打开联系人活动来查看联系人的信息,而不允许用户点击(或触摸)任何东西?

问题描述:

我想打开本地联系人活动,而不是我已经完成的联系人列表,但是使用本机活动的特定联系人信息。 这里的特殊要求是,我只想显示联系人的信息,但不允许用户单击任何内容。 我可以用这个代码打开活动:如何才能打开联系人活动来查看联系人的信息,而不允许用户点击(或触摸)任何东西?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode != 1) { 
     return; 
    } 

    if(resultCode != Activity.RESULT_OK) { 
     return; 
    } 

    Uri selectedUserUri = data.getData(); 
    this.onContactSelected(selectedUserUri); 
} 

private void onContactsButtonClick() { 
    startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), 1); 
} 

private void onContactSelected(Uri selectedUserUri) { 
    startActivityForResult(new Intent(Intent.ACTION_VIEW, selectedUserUri), 2); 
} 

我需要的用户不能够点击任何东西,因为那不是我的应用程序的功能的一部分,在最坏的情况下,我需要的活动报告我点击的电话号码或电子邮件地址,而不是打开拨号程序或网络浏览器。

任何帮助将不胜感激。

迈克

+0

没有ü要挑从电话簿中的联系人? – Dinesh 2012-07-09 05:08:59

+0

是的,这就是我正在做的工作,因为我想要它,问题出现在我显示选定的联系人后,因为如果我点击任何电话号码,它会开始打电话,这就是我想要避免的。 – 2012-07-09 05:15:41

的开始挑接触活动这样的代码写按钮单击事件联系人尝试这下面的代码:

try 
{ 
    Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
    startActivityForResult(intent, PICK_CONTACT); 
} 
catch (Exception e) { 
    Intent intent = getIntent(); 
    finish(); 
    startActivity(intent); 
} 

下面的代码获取联系电话:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 
     try 
     { 


     if (requestCode == PICK_CONTACT) 
     {   
      Cursor cursor = managedQuery(intent.getData(), null, null, null, null); 
      cursor.moveToNext(); 
      String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
      String phone=cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
      String phoneNumber="test"; 

      if (phone.equalsIgnoreCase("1")) 
       phone = "true"; 
      else 
       phone = "false" ; 

      if (Boolean.parseBoolean(phone)) 
      { 
      Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
      while (phones.moveToNext()) 
      { 
      phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      } 
      phones.close(); 
      } 
      Toast.makeText(this, "You are selected Contact name "+name, Toast.LENGTH_LONG).show(); 
      if(phone_no.getText().length()!=0) 
      { 
       phone_no.setText(phone_no.getText().toString()+","+phoneNumber); 
      } 
      else 
      { 
       phone_no.setText(phoneNumber); 
      } 

     } 
     } 
     catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 

这功能选择一个联系人分配phone_no Editext这是不允许拨打电话! 注:后onCreate()方法这个功能复制粘贴类似下面的格式:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    ------------Your Code --------- 
} 
@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 
     ------------ 
    } 
+1

谢谢,如果我正在阅读能够有效地将所选联系人的电话号码写入TextView中的代码,但这实际上并不是我需要的。 我需要的是打开本地联系人活动,但不允许拨打电话。当然,我可以截取该活动的截图并创建一个看起来完全相同的截图,但这样做会很多工作,并且不会与平台无关。 – 2012-07-09 16:35:31