Androidアプリとクリップボード
現在、GameBookアプリ作成教習用アプリを作っているのですが問題発生です。
とても大きなテキスト(サンプルゲームブックのシナリオデータとか)をどうやって、ユーザーに使ってもらうかと言う問題に直面しました。
最初は面倒なので、TextAreaなどに表示して長押しで選択、Googleドキュメントあたりにペーストしてもらおうかと考えましたが長いテキストだと、おそらくですが、フリーズして使い物にならず。
javascript経由でクリップボードの直接書こうとしたところ、失敗。
テキストを短くしても失敗。
調べて見ると、システム的に制限が加わった模様。
クリップボード データへの制限付きアクセス
https://developer.android.com/about/versions/10/privacy/changes?hl=ja#clipboard-data
思わぬところで問題発生。
Webサーバーに置くのが良さそうな気がしますが、もうちょっと検討してみます。
追記:
ソースコードは長くても(43KB)コピーペースト出来ましたから、シナリオデータ(517KB)はとりあえず端折って提供する方向で検討します。
50ページ(103KB)でコピーペースト成功したので、とりあえずはこれで良しとしましょう。
おまけ
確認コードはこんな感じです。ブラウザアプリでは成功、Android実機では失敗になります。
const type = "text/plain";
const blob = new Blob(["test clipboard"], { type });
// const blob = new Blob([PageData["page.json"]], { type });
const data = [new ClipboardItem({ [type]: blob })];
navigator.clipboard.write(data).then(
function () {
/* success */
alert("Success");
},
function () {
/* failure */
alert("failure");
}
);