まず、昨日 (2014 年 3 月 12 日) まではすべて問題ないように見えました。昼休み頃から、GDAA によって作成されたファイル (フォルダーではない) が Web ドライブ インターフェイスに表示されなくなりました。かなりの遅れ(3時間以上)で現れた人もいましたが、それ以来何もありません。Android GDAA の検索/検索機能では、ファイル (コンテンツを含む) とフォルダーの両方が表示されますが、Web ドライブにはフォルダーしかありません。このコードを使用してテストしますが、公式のデモも同じ結果で試しました。
1 に答える
標準の Android デバイスを使用して Google Play サービスのキャッシュを空にすることで修正されました
Settings -> Apps -> Google Play Services -> Clear Cache
おそらく、サービスの開発環境の乱用によって引き起こされた問題です。再発した場合はさらに調査します。
... 続き
深く掘り下げていくと、問題ではないように見えても、アプリ開発者にとって大きな問題を引き起こす可能性のある癖を発見しました。
1/ ユーザーがデバイスの
Settings -> Apps -> Google Play Services -> Manage Space -> Clear All Data
彼女/彼が決心したときはいつでも。GDAA を使用するアプリはこのアクションを認識していません。デバイスの所有者は、Google Play Services が Google ドライブ ベースのアプリと関係があることを知りません。
2/ これが発生した瞬間、GDAA アプリは、タイトルでフォルダー/ファイルを検索する機能を失います。クエリはここで失敗します (「NO md AVAILABLE」を参照)
...
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
if (mdb == null) return null;
dMDs = new ArrayList<DrvMD>();
for (Metadata md : mdb) {
if ((md == null) || (!md.isDataValid()) || (md.isTrashed())) continue;
// NO md AVAILABLE !!!
}
} finally { if (mdb != null) mdb.close(); }
}
些細な癖のように見えますが、ユーザーがこれを自由に実行できるという事実は、アプリに大きな問題を引き起こします。
理由は次のとおりです。同じ名前のフォルダー/ファイルが存在する場合、Google ドライブでのフォルダー/ファイルの作成は失敗しません。同じ名前で新しいものを作成します(モデルを理解しています)。しかし、(上記のユーザーのアクションが原因で) 名前で存在を照会する信頼できる方法がない場合、アプリは次のロジックで失敗します。
if (FOLDER/FILE by name exists)
return FOLDER/FILE ID
else
ID = create a new FOLDER/FILE
これまでのところ、これは、フォルダー/ファイルを作成/アクセスするときに思いつく唯一のロジックです。他に 2 つの一意の ID (リソース ID と DriveId) があることは知っていますが、この状況では役に立ちません。これを回避する方法はありますか?既存のオブジェクトを照会する機能を失うことなく、Google Play Services がユーザーのアクションから回復できれば素晴らしいことです。