Jak uzyskać informacje kontaktowe (tj. Nazwę numeru itp.) Po uruchomieniu działania przez QuickContactBadge

Pracuję nad QuickContactBadge. Chcę pokazać moją ikonę aplikacji w QuickContactBadge jak facebook lub gmail, a gdy użytkownik naciśnie ikonę, uruchomi moją aplikację wybraną aktywność. A po uruchomieniu aktywności chcę uzyskać numer telefonu wybrany przez użytkownika.

Obecnie moja aplikacja wyświetla QuickContactBadge, a odznaka uruchamia również główną aktywność w aplikacji, ale nie jestem w stanie uzyskać formularza numeru telefonu, który użytkownik uruchamia aplikację.

Mój kod jest następujący:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(getIntent().getData() != null) {
            Cursor cursor = getContentResolver().query(getIntent().getData(), null, null, null, null);
            if(cursor != null) {
                while (cursor.moveToNext()) { 
                    String contactId = cursor.getString(cursor.getColumnIndex( 
                            ContactsContract.Contacts._ID)); 
                    String hasPhone = cursor.getString(cursor.getColumnIndex( 
                            ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
                    if (Integer.parseInt(hasPhone) == 1) { 
                        // You know have the number so now query it like this
                        Cursor phones = getContentResolver().query( 
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                                null, 
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?" , 
                                new String[]{contactId}, null); 
                        while (phones.moveToNext()) { 
                            String phoneNumber = phones.getString( 
                                    phones.getColumnIndex( 
                                            ContactsContract.CommonDataKinds.Phone.NUMBER));  
                        } 
                        phones.close(); 
                    } else{
                        Toast.makeText(this, "Invalid Contact", Toast.LENGTH_SHORT).show();
                    }
                }   
            }
        }
        setContentView(R.layout.main);
    }

Otrzymuje Intent.getData, ale wyjątek ma numer hasPhone, ponieważ kolumna nie istnieje, a także w kodzie, jeśli zignoruję ten wyjątek, gdy numer telefonu nie będzie mógł go uzyskać. Plz pomóż mi, gdzie robię źle.

Użyłem tego kodu do wyświetlenia mojej aplikacji w QuickContactBadge

<activity
    android:name=".SandBoxProjectActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />

        <data android:mimeType="vnd.android.cursor.item/name" />
    </intent-filter>
</activity>

questionAnswers(1)

yourAnswerToTheQuestion