2014-04-29 35 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

相關問題