アプリに連絡先を返す連絡先ピッカーがあり、そこからいくつかの情報を sharedPreferences に保存しています。共有設定では、ルックアップ キーを使用してデータを保持しています (Android ドキュメントが示唆しているようです)。
この部分は問題ないようで、検索キーを取得して保存します。
私の問題は、ルックアップキーを介して連絡先を検索する連絡先を取り戻すことになり、時々nullを返すようです
次の詳細は連絡先ピッカーから取得されます
Contact lookup key from the contact picker: 850i%2bw7vj56otre6eqa9b9t7wa%3d%3d
Contact id: 2958
次に、次のコードを使用してルックアップ キーに基づいて連絡先を検索し、連絡先 ID を取得しようとします。
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, Uri.encode("850i%2bw7vj56otre6eqa9b9t7wa%3d%3d"));
Uri res = ContactsContract.Contacts.lookupContact(context.getContentResolver(), lookupUri);
これを行った後、連絡先ピッカーからのものであるため、IDが有効であることはわかっていますが、「res」はnullです。
ルックアップで res uri をログに記録すると、次のようになります。
content://com.android.contacts/contacts/lookup/850i%252bw7vj56otre6eqa9b9t7wa%253d%253d
これは(エンコードされた後)、私がそうあるべきだと思ったものです。誰かが私が間違っていることを見つけることができますか?
問題は、ほとんどの人 (私自身を含む) で機能することですが、これに遭遇する人もいます。