日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

アーカイブ

2023年10月 のアーカイブ

タイトル

執筆:2023.10.26
編集:2023.10.26


Android11
アプリから外部MicorSDカード領域に保存した画像がMediaStoreに登録できません!

getContentResolver().insert
EXTERNAL_CONTENT_URI

Requested path doesn't apper under [/storage/emulated/0]

なぜ emulated/0 にパスを勝手に変更しているの?

内部のユーザー領域なら正常に実行できる。
外部MicorSDカード領域のパスの場合上記のエラーになる。

フラグは、2種類しかないし INTERNAL_CONTENT_URI は、違うし。
ほかにフラグが増えたとか?

EXTERNAL_CONTENT_URI: The content:// style URI for the "primary" external storage volume.

ほかのアプリ(ファイラーだと)で名称変更でするとMediaStoreに上がってくるので APIレベル指定の違いかな?

古いアンドロイドならOKなのかな?
なにか互換性の設定がいるとか?

よくわからないので別の古い端末で動作確認してみよう。


追記
解決しました
Androidサイトのヘルプにも記述がないから苦労した。
ネットにも情報ないし、みんな迷走してSDCardへの保存が使えないと思い込んでいる模様。

getContentUri([定義済み定数|'ボリューム名']) です。
SDカードは、ボリューム名を入れます。ボリューム名は、getExternalVolumeNames関数から取得できます.

getExternalVolumeNames関数の結果
external_primary : 本体に保存する場合
4桁数値-4桁数値  : SDカードに保存する場合

LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString([定義済み定数|ボリューム名]));
// 'external_primary' or '4桁数値-4桁数値' : Android11
// 'external' : 古いAndroid
LJNewURI := TAndroidHelper.ContentResolver.insert(LContentUri, LJContentValues);



if (TJBuild_VERSION.JavaClass.SDK_INT >= 29) then // (Android10 API 29)
// MediaStore.VOLUME_EXTERNAL_PRIMARY : Constant Value: "external_primary"
LVolume := 'external_primary'
else
LVolume := 'external';
// LVolume := 'xxxx-xxxx'; // SDカードの場合は数値を書いて有効にする

LContentUri := TJImages_Media.JavaClass.getContentUri(StringToJString(LVolume));
//LContentUri := TJMyAndroidUtils.JavaClass.getContentUriFromFilename(
// TAndroidHelper.Context, StringToJString(LContentFilename));

ShowDebugMessage('ContentResolver:Uri:' + #10 + JStringToString(LContentUri.toString()));

» 続きを読む

タイトル

執筆:2023.10.23
編集:2023.10.23


[Delhi11 BUG] パス情報がない OpenPictureDialog1.FileName

再現方法
Windows11でAndoroidデバイスを接続して、AndoroidデバイスのSDカード内のファイルを選択する

OpenPictureDialog1は利用できないフォルダも表示されるので選択後に拒否する
    LFileName := OpenPictureDialog1.Files[0];
if Pos('\',LFileName) = 0 then
begin
ShowMessage('ドライブ情報が取得できないため操作できません。');
Exit;
end;
テキストなどを編集を選択すると
AppData\Local\Microsoft\Windows\INetCache\IE\**
に飛ばされる
エクスプローラーに表示されているドライブ情報自体が実在しないフェイクみたい


アンドロイドアプリ作ったことないので急遽Windowsアプリでしのごうと数時間で作ったのに
アクセスできない つかえなーい!!
いちいちAndroidからSDカード抜かないと操作できないので、どうしよう

・却下:ネットワークドライブに移動。 一番無難かもしれないが勝手にパケ食いされると困る。
・(めんどう):Andoridアプリ作る

とりあえず、電源切ってSDカードを移動して対応しよう。

昨日の夜 頑張って作ったのにショックだ!!

» 続きを読む

タイトル

執筆:2023.10.18
編集:2023.10.18


OCNメール

フィルターがついてて とっても便利なのですが
既定のままにしていると受信箱が公式スパムめーるだらけになり、必要なメールが見えなくなって利用価値なしなんです。
自動除去してしまえば普通に便利なので、悪の根源であるOCN公式スパムメールの除去方法です。

OCNメールには、フォルダ単位で受信をお知らせする機能がないので、そこはヤフーメールのほうが便利だと思います。

簡単です
要点は、「差出人」かつ「件名または本文」が一致するようにフィルターを設定してあげるだけです!

手順です

設定 フィルター管理 フィルター設定 新しいフィルター
から

次のルールを追加してください。
ほとんど共通ですので、違うのは 「件名または本文」 の部分だけです

アクションはすべて以下のようにしてください

アクション条件の指定※フォルダ削除時は削除対象フォルダを指定したアクション条件も削除されます
破棄する
以降のフィルターは処理しない

フィルター名 ゴミ 迷惑メール OCN 不動産
フィルター条件の指定
差出人: news@infomail.ocn.ne.jp
件名:不動産

フィルター名 ゴミ 迷惑メール OCN 不動産 [本文]
フィルター条件の指定
差出人: news@infomail.ocn.ne.jp
本文:不動産

フィルター名 ゴミ 迷惑メール OCN 査定
フィルター条件の指定
差出人: news@infomail.ocn.ne.jp
件名:査定

フィルター名 ゴミ 迷惑メール OCN ふるさと納税
フィルター条件の指定
差出人: news@infomail.ocn.ne.jp
件名:ふるさと納税

メールを消したくない場合
専用のフォルダを作成して
差出人: news@infomail.ocn.ne.jp
を条件にして、そこへ移動するようにフィルターを作成するといいと思います!



PR

[PR]