2014-04-29 33 views
0

运行我的应用程序时,LogCat中出现以下错误。 “未发现处理意图的活动”如何在清单中注册意向

按下button3,callButton时发生错误。这会尝试调出要联系的联系人列表。它什么都不做,并在几次按下后,应用程序崩溃。

我认为我必须将意图添加到清单中,但我不确定作为新手遇到了这个问题。

AndroidManifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.contactpicker" > 

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

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="18" /> 

    <application android:icon="@drawable/ic_launcher" > 
     <activity 
      android:name="com.example.contactpicker.ContactPicker" 
      android:label="All Contacts" > 
      <intent-filter> 
       <action android:name="android.intent.action.PICK" > 
       </action> 

       <category android:name="android.intent.category.DEFAULT" > 
       </category> 

       <data 
        android:path="contacts" 
        android:scheme="content" > 
       </data> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContactPickerTester" 
      android:label="@string/title_activity_contact_picker_tester" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContactDetailActivity" 
      android:label="@string/title_activity_contact_detail" > 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContactDetailFragment" 
      android:label="@string/title_activity_contact_detail_fragment" > 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContactsListActivity" 
      android:label="@string/title_activity_contacts_list" > 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContactsListFragment" 
      android:label="@string/title_activity_contacts_list_fragment" > 
     </activity> 
     <activity 
      android:name="com.example.contactpicker.ContentProviderActivity" 
      android:label="@string/title_activity_content_provider" > 
     </activity> 
    </application> 

</manifest> 

其他代码

public class ContactPickerTester extends Activity { 

    public static final int PICK_CONTACT = 1; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contact_picker_tester); 

     Button button = (Button) findViewById(R.id.button1); 

     button.setOnClickListener(new OnClickListener() { 

      public void onClick(View _view) { 
       Intent intent = new Intent(Intent.ACTION_PICK, Uri 
         .parse("content://contacts/")); 
       startActivityForResult(intent, PICK_CONTACT); 
      } 
     }); 

     Button insertContactButton = (Button) findViewById(R.id.button2); 
     insertContactButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       insertContactWithIntent(); 
      } 
     }); 
    } 

    private void insertContactWithIntent() { 
     // inserting a new contact using intents// 
     Intent intent = new Intent(Intent.ACTION_INSERT, 
       ContactsContract.Contacts.CONTENT_URI); 
     startActivity(intent); 

     Button callButton = (Button) findViewById(R.id.button3); 

     callButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent myIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("content://contacts/")); 
       startActivity(myIntent); 
      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int reqCode, int resCode, Intent data) { 
     super.onActivityResult(reqCode, resCode, data); 

     switch (reqCode) { 
      case (PICK_CONTACT): { 
       if (resCode == Activity.RESULT_OK) { 
        Uri contactData = data.getData(); 
        Cursor c = managedQuery(contactData, null, null, null, null); 
        c.moveToFirst(); 
        String name = c 
          .getString(c 
            .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
        TextView tv = (TextView) findViewById(R.id.selected_contact_textview); 
        tv.setText(name); 
       } 
       break; 
      } 
     } 
    } 

} 

回答

0

使用IntentACTION_CALL拨打电话

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:" + phoneNumber)); 
startActivity(callIntent); 

如果您需要从接触使用IntentACTION_PICK

static final int PICK_CONTACT_REQUEST = 1; 

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); 
pickContactIntent.setType(Phone.CONTENT_TYPE); 
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 

挑选号码如果选择联系人,你可以得到接触结果早在onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PICK_CONTACT_REQUEST) { 
    if (resultCode == RESULT_OK) { 
     // Get the URI that points to the selected contact 
     Uri contactUri = data.getData(); 
     String[] projection = {Phone.NUMBER}; 

     Cursor cursor = getContentResolver() 
       .query(contactUri, projection, null, null, null); 
     cursor.moveToFirst(); 

     // Retrieve the phone number from the NUMBER column 
     int column = cursor.getColumnIndex(Phone.NUMBER); 
     String phoneNumber = cursor.getString(column); 

     // now you can ACTION_CALL intent to make call 
    } 
    } 
} 
+0

这个作品!但我想没有任何phoneNumber字符串,(我将它设置为0,并且当单击按钮时,它打开0上的拨号程序)。我怎样才能打开电话而不使用电话号码? – user3466400

+0

如果您需要打开,请勿在意图中设置数据。另请参阅我的更新答案,如何启动联系人并根据需要选择号码 – Libin

+0

谢谢! v有帮助 – user3466400

相关问题