-8600〜-8611, -8624 (モバイル SDK ストレージ入出力エラー)
モバイル SDK がダウンロードファイルおよびデータベース(DB)を読み書きする過程で発生するファイルシステムエラーです。ファイル入出力およびデータベースの状態によって原因が異なるため、連携環境を確認してください。
エラーコード一覧
| エラーコード | タイプ | 説明 |
|---|---|---|
| -8600 | ERROR_CREATE_DIRECTORY | ディレクトリ作成失敗 |
| -8601 | ERROR_CREATE_FILE | ファイル作成失敗 |
| -8602 | ERROR_SAVE_DATA | ファイルデータ保存失敗 |
| -8603 | ERROR_OPEN_DB | DB ファイルオープン失敗 |
| -8604 | ERROR_CREATE_TABLE | DB テーブル作成失敗 |
| -8605 | ERROR_SELECT_TABLE | DB テーブル照会失敗 |
| -8606 | ERROR_DELETE_RECORD | DB レコード削除失敗 |
| -8607 | ERROR_INSERT_RECORD | DB レコード追加失敗 |
| -8608 | ERROR_OPEN_FILE | ファイルオープン失敗 |
| -8609 | ERROR_OUT_OF_MEMORY | メモリ不足による処理失敗 |
| -8610 | ERROR_READ_FILE | ファイル読み込み失敗 |
| -8611 | ERROR_WRITE_FILE | ファイル書き込み失敗 |
| -8624 | ERROR_UPDATE_RECORD | DB レコード更新失敗 |
原因 A: ストレージアクセス権限なし
アプリケーションがデバイスの外部ストレージ(SD カード)や特定のディレクトリにアクセスしてデータを書き込むための物理的な権限がない場合に発生します。
- Android: Android 6.0(API 23)以上の環境でランタイム権限を明示的に取得していない場合、または Android 10(API 29)以上のスコープ付きストレージ(Scoped Storage)セキュリティポリシーに違反して外部ストレージへの直接アクセスが制限される現象です。
- iOS: システムアプリのサンドボックス内部空間(
Documents、Libraryフォルダなど)ではなく、セキュリティ権限が制限された外部パスをKollusStorageの保存先として誤って指定した場合です。
診断および解決方法
Android
アプリケーションの現在の外部ストレージ書き込み権 限の割り当て状態を確認し、ターゲット API バージョンに応じたメディアストレージアクセスポリシーを把握してください。
// Android 6.0 or later - Check whether runtime permission has been granted
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Request permission from the user
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQ_CODE);
}
iOS
KollusStorage インスタンスの保存パス設定が正しいか確認してください。
原因 B: デバイスのストレージ容量不足
デバイスのストレージ容量がなく、ファイルの作成および書き込み(Write)ができない場合に発生します。
容量不足の状態でダウンロードをリクエストすると、該当エラーコードとともに -8623(ERROR_STORAGE_FULL)エラーが発生します。
解決方法
ダウンロードを開始する前に、以下の例を参考にデバイスの空き容量を事前に確認してください。
Android
long available = new File(downloadPath).getUsableSpace();
// Check if available space is sufficient before starting the download
iOS
let freeSpace = DiskStatus.freeDiskSpaceInBytes
if freeSpace < requiredBytes {
// Notify the user of insufficient device storage space
}
ユーザーへの案内(例)
"ストレージ容量が不足しています。不要なファイルを削除してから再度お試しください。"
原因 C: DB ファイルの破損
アプリの強制終了または異常終了、ダ ウンロード中のストレージの物理的な切断(外部 SD カードの強制取り外し)などにより、内部 SQLite データベースが破損した場合に発生します。 主に -8603(DB オープン失敗)および -8604(テーブル作成失敗)のパターンで返されます。
解決方法
破損した DB ファイルを削除した後、再初期化ロジックをトリガーする必要があります。このプロセスを実行するとダウンロード済みコンテンツのリストが初期化されるため、ユーザーに再ダウンロードを案内してください。
Android
KollusStorage インスタンスの解放 → DB ファイルの削除 → 再作成
// Create Android DB file object and delete the file
File dbFile = new File(context.getFilesDir(), "kollus_storage.db");
if (dbFile.exists()) dbFile.delete();
// Re-initialize KollusStorage after deletion
ユーザーへの案内(例)
"データエラーが発生しました。アプリを再起動するか、コンテンツを再ダウンロードしてください。"
共通診断ガイド
入出力例外エラーが発生した場合、以下のチェックリストをもとに現象を把握して対応してください。
- -8623(
ERROR_STORAGE_FULL)エラーが同時に発生しましたか? - 初回インストール直後または Android バージョンの更新後にエラーが発生しましたか?
- 正常に動作していたデバイスで突然エラーが発生しましたか?
- 上記 3 つのいずれにも該当しない場合は?
- 詳細なエラーコード、デバイスの OS バージョン、デバイスのモデル名、再現方法などを収集して、営業担当者(jp_sales@catenoid.net)までお問い合わせください。