So erhalten Sie Kontaktinformationen (z. B. Name der Nummer usw.), sobald die Aktivität mit QuickContactBadge gestartet wurde

Ich arbeite an QuickContactBadge. Ich möchte mein App-Symbol im QuickContactBadge anzeigen, z. B. Facebook oder Google Mail. Wenn der Benutzer auf das Symbol drückt, wird meine Anwendung mit einer ausgewählten Aktivität gestartet. Und wenn die Aktivität gestartet wird, möchte ich die Telefonnummer erhalten, die der Benutzer ausgewählt hat.

Derzeit zeigt meine Anwendung QuickContactBadge an, und das Abzeichen startet auch die Hauptaktivität in der Anwendung. Ich kann jedoch nicht die Telefonnummer ermitteln, mit der der Benutzer die Anwendung startet.

Mein Code lautet wie folgt:

@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);
    }

Es wird die Intent.getData-Ausnahme für die hasPhone-Nummer abgerufen, da die Spalte nicht vorhanden ist, und auch im Code, wenn ich diese Ausnahme ignoriere, während die Telefonnummer abgerufen wird, die sie nicht abrufen kann. Bitte helfen Sie mir, wo ich falsch mache.

Ich habe diesen Code verwendet, um meine App im QuickContactBadge anzuzeigen

<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>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage