0
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
            startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);

This basic intent works when I extend Activity (i.e. "MainActivity extends Activity"), but not when I extend AppCompatActivity. Can someone explain why, please :| I've been trying to figure it out for days.

I just really want to keep the action bar I already have in an existing app while being able to let the user pick a contact.

Logcat spouted a lot of stuff, not sure how much to copy&paste but here's a log when I clicked the button with a try/catch block:

11-17 18:37:36.386 2790-2790/com.danie.contactstesting1 W/System.err: java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
11-17 18:37:36.389 2790-2790/com.danie.contactstesting1 W/System.err:     at android.support.v4.app.BaseFragmentActivityApi14.checkForValidRequestCode(BaseFragmentActivityApi14.java:79)
11-17 18:37:36.390 2790-2790/com.danie.contactstesting1 W/System.err:     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:717)
11-17 18:37:36.390 2790-2790/com.danie.contactstesting1 W/System.err:     at com.danie.contactstesting1.MainActivity$1.onClick(MainActivity.java:31)
11-17 18:37:36.391 2790-2790/com.danie.contactstesting1 W/System.err:     at android.view.View.performClick(View.java:6294)
11-17 18:37:36.391 2790-2790/com.danie.contactstesting1 W/System.err:     at android.view.View$PerformClick.run(View.java:24770)
11-17 18:37:36.391 2790-2790/com.danie.contactstesting1 W/System.err:     at android.os.Handler.handleCallback(Handler.java:790)
11-17 18:37:36.391 2790-2790/com.danie.contactstesting1 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
11-17 18:37:36.392 2790-2790/com.danie.contactstesting1 W/System.err:     at android.os.Looper.loop(Looper.java:164)
11-17 18:37:36.392 2790-2790/com.danie.contactstesting1 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
11-17 18:37:36.392 2790-2790/com.danie.contactstesting1 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
11-17 18:37:36.392 2790-2790/com.danie.contactstesting1 W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
11-17 18:37:36.392 2790-2790/com.danie.contactstesting1 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
11-17 18:37:36.392 1378-3101/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 489826 , only wrote 489600
11-17 18:37:37.668 2064-3590/com.google.android.dialer I/Dialer: OmtpVvmCarrierCfgHlpr - OmtpEvent:CONFIG_STATUS_SMS_TIME_OUT
11-17 18:37:37.669 2064-2064/com.google.android.dialer I/Dialer: RetryPolicy - discarding deferred status: configuration_state=4
11-17 18:37:37.672 2064-2064/com.google.android.dialer I/Dialer: VvmTaskExecutor - no more tasks, stopping service if no task are added in 5000 millis
11-17 18:37:37.685 2064-2064/com.google.android.dialer I/Dialer: VvmTaskReceiver - task received
11-17 18:37:37.688 2064-2064/com.google.android.dialer I/Dialer: VvmTaskReceiver - TaskExecutor already running
11-17 18:37:37.688 2064-2064/com.google.android.dialer I/Dialer: Task.createTask - create task:com.android.voicemail.impl.ActivationTask
11-17 18:37:37.689 2064-2064/com.google.android.dialer I/Dialer: RetryPolicy - retry #2 for com.android.voicemail.impl.ActivationTask@66adaa2 queued, executing in 5000
11-17 18:37:37.689 2064-2064/com.google.android.dialer I/Dialer: VvmTaskExecutor - com.android.voicemail.impl.ActivationTask@66adaa2 added
11-17 18:37:37.689 2064-2064/com.google.android.dialer I/Dialer: VvmTaskExecutor - minimal wait time:4999
11-17 18:37:37.689 2064-2064/com.google.android.dialer I/Dialer: VvmTaskExecutor - sleep for 4999 millis
11-17 18:37:39.618 1378-1528/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 797294 , only wrote 644400
11-17 18:37:42.695 2064-3590/com.google.android.dialer I/Dialer: VvmTaskExecutor - executing task com.android.voicemail.impl.ActivationTask@66adaa2
11-17 18:37:42.697 2064-3590/com.google.android.dialer I/Dialer: PreOMigrationHandler - ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, [e2f7d48dd2b5ca523e7313cf4ba0f6ea830b6281], UserHandle{0} already migrated
11-17 18:37:42.740 2064-3590/com.google.android.dialer I/Dialer: VvmActivationTask - VVM content provider configured - vvm_type_cvvm
11-17 18:37:42.741 2064-3590/com.google.android.dialer I/Dialer: OmtpVvmCarrierCfgHlpr - OmtpEvent:CONFIG_ACTIVATING
11-17 18:37:42.763 2064-3590/com.google.android.dialer I/Dialer: TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings - using TelephonyManager
11-17 18:37:42.767 2064-3590/com.google.android.dialer I/Dialer: TelephonyMangerCompat.sendVisualVoicemailSms - using TelephonyManager
11-17 18:38:00.025 1716-1729/com.android.systemui I/zygote: Do partial code cache collection, code=121KB, data=83KB
11-17 18:38:00.025 1716-1729/com.android.systemui I/zygote: After code cache collection, code=121KB, data=83KB
11-17 18:38:00.025 1716-1729/com.android.systemui I/zygote: Increasing code cache capacity to 512KB
11-17 18:38:00.026 1388-1413/? D/hwcomposer: hw_composer sent 18 syncs in 60s
11-17 18:38:08.586 1585-1599/system_process E/memtrack: Couldn't load memtrack module
11-17 18:38:08.587 1585-1599/system_process W/android.os.Debug: failed to get memory consumption info: -1
11-17 18:38:08.609 1585-1599/system_process E/memtrack: Couldn't load memtrack module
11-17 18:38:08.609 1585-1599/system_process W/android.os.Debug: failed to get memory consumption info: -1
11-17 18:38:08.621 1585-1599/system_process E/memtrack: Couldn't load memtrack module

Uhh okay embarrassing, I just had to use a lower request code (RESULT_PICK_CONTACT was 85500). Thanks CommonsWare for pointing me towards Logcat. Haha... Thanks everyone for quick responses as well!

Cake
  • 1
  • 1
  • I really can't imagine switching to Appcompat has effect on Intent.ACTION_PICK. Can you describe the issue in more detail please – Tim Nov 17 '17 at 23:10
  • `AppCompatActivity` also is an indirect subclasses of `Activity`! – Xenolion Nov 17 '17 at 23:10
  • The app crashes when I try to send an intent when extending AppCompatActivity, but works when I change to Activity. I can't imagine switching the two breaking the intent either but I can't find out why and I'm GOING INSANE – Cake Nov 17 '17 at 23:14
  • "The app crashes when I try to send an intent when extending AppCompatActivity" -- use LogCat to examine the Java stack trace associated with your crash: https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – CommonsWare Nov 17 '17 at 23:16
  • :| It doesn't print anything to Logcat.. I tried adding a try/catch block and instead of crashing, the button does nothing and nothing gets printed.. – Cake Nov 17 '17 at 23:23
  • try { Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT); } catch (Exception e) { e.printStackTrace(); } – Cake Nov 17 '17 at 23:23
  • "It doesn't print anything to Logcat" -- then it is not crashing. There is always a stack trace when an app crashes. – CommonsWare Nov 17 '17 at 23:25
  • Oh. I also might have pressed something weird on Logcat, I'm going to try to fix that right now! – Cake Nov 17 '17 at 23:26
  • Thanks CommonsWare, Logcat is awesome. Love it, would use again. – Cake Nov 17 '17 at 23:49

2 Answers2

0

I had to use a lower request code (RESULT_PICK_CONTACT was 85500). Thanks CommonsWare for pointing me towards Logcat (yes, I am 100% noob).

Cake
  • 1
  • 1
0

This work for me

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent 
data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
             case RESULT_PICK_CONTACT:
                  Cursor cursorPickPhoneNo = null;
                  try {
                    String phonenumber = null ;
                    String name = null;
                    Uri uri = data.getData();
                    cursorPickPhoneNo = getContentResolver().query(uri, null, null, null, null);
                    cursorPickPhoneNo.moveToFirst();
                    int  index =cursorPickPhoneNo.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                    phonenumber = cursorPickPhoneNo.getString(index);
                    Toast.makeText(this, ""+phonenumber, Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
        }
    } 
}
kamal verma
  • 496
  • 3
  • 16