Question

J'ai obtenu cette erreur d'un de mes utilisateurs et j'ai pas la moindre idée comment le résoudre ...

java.lang.IllegalArgumentException DatabaseUtils.readExceptionFromParcel ()

java.lang.IllegalArgumentException: URI: content://com.android.contacts/phone_lookup/, calling user: com.piroja.contactpicker, calling package:com.piroja.contactpicker at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:144)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:245)
at com.piroja.contactpicker.ContactPicker.contactExists(ContactPicker.java:257)
at com.piroja.contactpicker.ContactPicker$6$1.onClick(ContactPicker.java:138)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
at dalvik.system.NativeStart.main(Native Method)

Ceci est le contactExists Función j'appelle qui (je pense) est à l'origine de la clôture de la force:

public boolean contactExists(Context context, String number) {
        try {
            Uri lookupUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri
                    .encode(number));
            String[] mPhoneNumberProjection = { Phone._ID, Phone.NUMBER,
                    Phone.DISPLAY_NAME };
            Cursor cur = context.getContentResolver().query(lookupUri,
                    mPhoneNumberProjection, null, null, null);
            try {
                if (cur.moveToFirst()) {
                    return true;
                }
            } finally {
                if (cur != null)
                    cur.close();
            }
        } catch (IllegalArgumentException iae) {
            return false;
        }
        return false;
    }

J'ai aussi essayé de changer Phone.CONTENT_FILTER_URI à PhoneLookup.CONTENT_FILTER_URI mais il n'a rien de changement ... Est-ce que quelqu'un a une idée?

Était-ce utile?

La solution

Il y a quelque chose de mal avec l'URI requête de téléphone. A partir du texte d'exception, il semble que ce manque le numéro de téléphone. Êtes-vous sûr nombre est non nul et non vide?

Autres conseils

Cela peut se produire avec le numéro masqué. http://code.google.com/p/gtalksms/issues/detail ? id = 27

Je ne sais pas si quelqu'un a encore besoin de cette réponse, mais j'ai essayé jusqu'à ce que je l'ai eu. Le problème est que parfois, le numéro entrant est null lorsque vous étendez une ou l'autre classe PhoneStateListener, ou lors du passage du dernier numéro entrant. J'ai changé mon code pour cela, et il a bien fonctionné

@Override
public void onReceive(final Context context, final Intent intent) {
    Log.d("APP", "ACTION:" + intent.getAction());
    final String stringExtra = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
    if (TelephonyManager.EXTRA_STATE_RINGING.equals(stringExtra)) {
            final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
            Log.d("APP", "incoming,ringing:" + incomingNumber);
        } else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
            final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
            Log.d("APP", "hanged" + incomingNumber );
        } else if (stringExtra.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
            final String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
            Log.d("APP", "answered" + incomingNumber );
        }
    }

... cette solution est ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top