Почему я получаю ошибку принудительного закрытия при нажатии на контакт из списка? (Разработка приложений для Android) - PullRequest
0 голосов
/ 08 апреля 2011

Я полный нуб в разработке приложений для Android, поэтому мне нужна помощь любого эксперта. Я нашел какой-то код в Интернете для отображения списка контактов при нажатии на EditText. Я до сих пор понимаю большую часть кода, но проблема в том, что когда я выбираю контакт, он просто выдает ошибку принудительного закрытия.

Я хотел бы, чтобы после нажатия на контакт имя и номер контакта добавлялись в EditText с ";" в качестве разделителя.

Вот код, с которым я работаю:

package com.rmedia.android;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Toast;

public class ContactList extends Activity implements OnClickListener {
    EditText ed;
    int PICK_CONTACT;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ed =(EditText)findViewById(R.id.editContact);
        ed.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.editContact:
                 Intent intent = new Intent(Intent.ACTION_PICK);
                 intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
                 startActivityForResult(intent, PICK_CONTACT);
            break;
        }
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent){
        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)); 

            Toast toast = Toast.makeText(this, "Contect LIST  =  "+name+" "+contactId, Toast.LENGTH_LONG);
            toast.show();
        }
    }
}

Любая помощь в правильном направлении очень ценится! Спасибо!

1 Ответ

1 голос
/ 12 сентября 2012

Раньше у меня возникала та же проблема, что и с моим приложением SMS.А потом меня поразило, что всякий раз, когда приложению необходимо получить разрешения, и если я не указываю, какое разрешение мне нужно, чтобы запустить это приложение, Android принудительно закрывает приложение, прежде чем даже я могу моргнуть.

Поэтому, прежде чем запускать какое-либо приложение, независимо от того, копируете ли вы его из чужого кода или из Интернета или делаете это самостоятельно,

  • всегда дважды подумайте (более) о том, нужно ли вашему приложению объявлятьлюбые разрешения в вашем файле манифеста
  • , если это так, объявите его, прежде чем пытаться запустить приложение в эмуляторе или на реальном устройстве.
...