>

내 앱을 통해 연락처를 만들고 있지만 연락처 앱이 전화에 없으면 ANR을 제공합니다. 연락처 앱이 휴대 전화에 설치되어 있는지 확인하려면 어떻게해야합니까?

Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, contactNumber)
      .putExtra(ContactsContract.Intents.Insert.NAME, contactName);


  • 답변 # 1

    의도를 해결하기 위해 설치된 앱이 없을 때 catch 블록이 호출됩니다. 블록에서 사용자에게 알릴 수 있습니다

    try {
      startActivity(intent);
    } catch (ActivityNotFoundException ex) {
      //Do something
    }
    
    

  • 답변 # 2

    Intent 를 사용하는 대신  ContentProvider를 사용하여 연락처를 작성할 수 있습니다. 기기에 Contact 앱이 필요하지 않습니다. 이렇게하려면 다음과 같이하십시오.

  • 답변 # 3

    작업을 5 회 이상 수행하므로 ANR 대화 상자가 나타남 메인 스레드에서 두 번째이므로 백그라운드 스레드에서 수행해야합니다.

    이것을 시도해야합니다.

    연락처 선택 도구 :

    예 :

    public void contactIntent(View v){
                Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
                startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);
            }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // check whether the result is ok
            if (resultCode == RESULT_OK) {
                // Check for the request code, we might be usign multiple startActivityForReslut
                switch (requestCode) {
                case RESULT_PICK_CONTACT:
                    contactPicked(data);
                    break;
                }
            } else {
                Log.e("MainActivity", "Failed to pick contact");
            }
        }
        /**
         * Query the Uri and read contact details. Handle the picked contact data.
         * @param data
         */
        private void contactPicked(Intent data) {
            Cursor cursor = null;
            try {
                String phoneNo = null ;
                String name = null;
                // getData() method will have the Content Uri of the selected contact
                Uri uri = data.getData();
                //Query the content uri
                cursor = getContentResolver().query(uri, null, null, null, null);
                cursor.moveToFirst();
                // column index of the phone number
                int  phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                // column index of the contact name
                int  nameIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                phoneNo = cursor.getString(phoneIndex);
                name = cursor.getString(nameIndex);
                // Set the value to the textviews
                textView1.setText(name);
                textView2.setText(phoneNo);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    

  • 이전 javascript - 바둑판 식 img에서 단일 img 만들기
  • 다음 html - Cant는 PHP를 사용하여 데이터베이스에 이미지를 저장