相关疑难解决方法(0)

MediaScannerConnection生成android.app.ServiceConnectionLeaked

我正在使用API演示中的MediaScannerConnection示例代码

我正在使用的片段是:

MediaScannerConnection.scanFile(
    context,
    new String[] { permFile.getAbsolutePath() }, 
    null,
    new MediaScannerConnection.OnScanCompletedListener() {
        public void onScanCompleted(String path, Uri uri) {

            android.util.Log.i("ExternalStorage", "Scanned " + path + ":");
            android.util.Log.i("ExternalStorage", "-> uri=" + uri);
        }
});
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我从LogCat获得一个带有以下内容的FC对话框:

4-20 23:17:45.988: ERROR/ActivityThread(3015): Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here
04-20 23:17:45.988: ERROR/ActivityThread(3015): android.app.ServiceConnectionLeaked: Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?仅供我使用AsyncTask从后台线程运行此功能.

android sample

29
推荐指数
2
解决办法
6327
查看次数

无法通过MTP看到在Android外部存储上创建的文件夹,但该文件夹显示在adb shell中

我在开发的应用程序在这里遇到了一个奇怪的问题。它使用Apache Codova 3.0.0和库存文件插件在具有Android 4.3的Samsung Galaxy Nexus的外部存储上创建目录,并在其中添加一些文件。

这里发生的是,我实际上可以执行此操作,但是当我将设备作为大容量存储设备连接到计算机时,创建的目录(包括文件)没有显示。除我创建的文件夹外,所有其他文件夹均正常显示。但是,当我使用“ adb shell”浏览设备时,我可以看到该文件夹​​,并且其来自“ ls -al”的目录模式与所有其他文件夹的模式完全相同。读取和写入权限被授予该应用程序。

我也在Android代码中尝试过相同的方法,其行为完全相同:

File f = new File(Environment.getExternalStorageDirectory().toString()+"/myFolder");
if (!f.isDirectory()) {
    f.mkdir();
    Log.i("myApp", "Created directory: "+f);
}
Run Code Online (Sandbox Code Playgroud)

该操作成功,但是当我将设备重新连接到计算机时,该文件夹再次不可见。提及一下:我从IDE运行应用程序-也许:是否有一个沙盒或我不知道的沙盒,可能会导致使用adb shell在/ sdcard中显示内容,但在连接为外部存储时却没有显示?

我想我必须在这里想念一些基本的东西,希望你们对我有一个答案:)

谢谢!

java android cordova

2
推荐指数
1
解决办法
2284
查看次数

如何在Delphi中创建文件夹和txt文件

如何在Android的内部存储(?)中创建一个新文件夹(我想说,主文件夹包含所有子文件夹... Whatsapp,DCIM,图片,铃声,闹钟..),并在其中创建一个新.txt文件在此文件夹中。

我要创建一个.txt文件,我需要用户将USB电缆插入他们的计算机,访问该设备,输入我的应用程序创建的文件夹,然后将此文件复制到他们的桌面。

我尝试使用以下代码创建文件:

procedure TF_start.Button2Click(Sender: TObject);
var
  output_text: string;
  arquivo: TextFile;
begin
  output_text := 'test';

  TFile.WriteAllText(TPath.Combine(TPath.GetDocumentsPath, 'test.txt'), 'content');

  ReWrite(arquivo);

  WriteLn(arquivo, output_text);

  CloseFile(arquivo);

end;
Run Code Online (Sandbox Code Playgroud)

但这行不通。

要获取内部存储(?)路径,我找到了以下代码:

P := '/storage/';
if (FindFirst(P + '*', faAnyFile, Sr) = 0) then
  repeat
    Memo1.Lines.Add(Sr.Name);
  until (FindNext(Sr) <> 0);
FindClose(Sr);
Run Code Online (Sandbox Code Playgroud)

但是我不明白它是如何工作的,所以我什至不能使用它。

我也找到了此链接,但是没有找到任何函数返回我要创建文件夹的“常规”目录路径。

函数System.IOUtils.TPath.GetHomePath(),并System.IOUtils.TPath.GetDocumentsPath()没有返回正确的路径。

System.SysUtils.GetHomePath() 返回-> /data/user/0/com.embarcadero.app/cache

System.IOUtils.TPath.GetDocumentsPath() 返回-> /data/com.embarcadero.app-1/lib/arm

@编辑

使用@Remy Lebeau代码和这段代码,我设法做到了这一点。问题是用文件更新目录的代码什么都不做

Use System.IOUtils, Androidapi.Helpers, Androidapi.Jni.Media, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText;
Run Code Online (Sandbox Code Playgroud)

//按钮

procedure TF_start.Button2Click(Sender: …
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey

1
推荐指数
1
解决办法
264
查看次数

标签 统计

android ×2

cordova ×1

delphi ×1

firemonkey ×1

java ×1

sample ×1