Приложение вылетает при нажатии кнопки, как я могу решить это Android Studio - PullRequest
0 голосов
/ 31 августа 2018

Вот код:

button.setOnClickListener(new View.OnClickListener() {
    @Override public void onClick (View view){
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
    startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);
}
}); return view;}

public void but(View v) {
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
    startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case RESULT_PICK_CONTACT:
                contactPicked(data);
                break;
        }
    } else {
        Log.e("MainActivity", "Failed to pick contact");
    }
}

private void contactPicked(Intent data) {
    Cursor cursor = null;
    try {
        String phoneNo = null;
        String name = null;
        Uri uri = data.getData();
        cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
        int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
        phoneNo = cursor.getString(phoneIndex);
        name = cursor.getString(nameIndex);
        if (phoneNo.startsWith("+")) {
            if (phoneNo.length() == 13) {
                String str_getMOBILE = phoneNo.substring(4);
                editText.setText(("0") + str_getMOBILE);
            }
            if (phoneNo.length() == 16) {
                String str_getMOBILE = phoneNo.substring(4);
                editText.setText(("0") + str_getMOBILE);
            }
        } else {
            editText.setText(phoneNo);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете столкнуться с любым из следующих сценариев, которые привели к сбою:

  • Ваша кнопка не объявлена ​​и не инициирована должным образом в методе onCreate() вашего основного класса. Поэтому, пожалуйста, проверьте, есть ли у вас код ниже в вашем onCreate() методе:

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

  • Ваше приложение считывает контакты с пользовательского устройства, которое я считаю. В этом случае, пожалуйста, проверьте, есть ли у вас разрешение на чтение контактов. Для этого просто проверьте, включена ли указанная ниже строка в файл AndroidManifest.xml:

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

  • Проверьте, есть ли у вас разрешение на вызов соответствующего намерения.

Ваша трассировка logcat будет содержать точную строку кода, которая привела к сбою, и код ошибки. Поэтому, если вы вставите сюда информацию logcat, вы можете получить помощь.

0 голосов
/ 31 августа 2018

Прежде всего вы должны проверить, нашли ли вы просмотр кнопки или нет. Если нет, то сначала сделайте это.

Если вы сделали это, то после нажатия кнопки проверьте раздел Logcat в Android-студии. У вас будет отличная причина сбить ваше приложение.

...