Google Drive API for Android で腹立たしいバグが発生しています。具体的には、「Google ドライブからファイルを開く」UI をユーザーに提示する際に、次のコードを使用してフォルダー内のファイルを照会しています。
String query = "'" + folderId + "' in parents and trashed = false";
Files.List request = service.files().list().setQ(query);
FileList files = request.execute();
java.util.List<File> items = files.getItems(); // Returns null!
このコードを Eclipse から直接実行した場合 (つまり、デバッグ証明書で署名した場合)、問題はありません。しかし、リリース証明書を使用して署名付き APK をビルドして実行すると、files.getItems() の呼び出しで null が返されます。
奇妙なことに、getItems() は null を返しますが、Drive サーバーから返されたデータは間違いなくあります。files.toString() を呼び出すと、Json の混乱が表示されるためです。問題が認証の問題だとは思わない。
また、クエリ文字列で異なる folderIds を使用しても、toString() によって返される Json に違いはないようです。logcat の積極的な GC アクティビティに基づいて、サーバーがドライブ内のすべてのファイルを返している可能性があるように見えます。特に、getItems() が null を返すことを考えると奇妙です。
アプリ内から Google ドライブを完全に参照できるため、デバッグ証明書で署名された場合、コードは完全に正常に動作することに注意してください。