在android文件中,canRead()始终返回false

时间:2015-12-18 14:29:03

标签: java android file

我想启动一个服务,扫描特定目录中的子目录和文件。这就是我在MainActivity的onCreate方法中启动服务的方法(我仅将FAB用于测试目的):

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getApplicationContext(), AudioBookLibraryScannerService.class);
            intent.putExtra(AudioBookLibraryScannerService.ROOT_DIR, rootDir);
            getApplicationContext().startService(intent);
        }
    });

rootDir定义为:

private File extStore = Environment.getExternalStorageDirectory();
private String rootDir = extStore.getAbsolutePath() + "/aubop/";

我也在AndroidManifest.xml中设置了权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

在AudioBookLibraryScannerService类中,我将传递的rootDir作为文件读取:

public static final String ROOT_DIR = "rootDir";
private File rootDir;
[...]
@Override
public void onHandleIntent(Intent intent)
{
    [...]
    String rootDirPath = intent.getStringExtra(ROOT_DIR);
    rootDir = new File(rootDirPath);
    Log.e(TAG, rootDirPath.getAbsolutePath());
    if(rootDir.canRead()) {
        Log.e(TAG, "canRead");
    }
    [...]
}

永远不会追踪值“canRead”,但是跟踪的绝对路径是正确的。 我还使用文件管理器检查了目录的权限。权限设置为771,UID为“root”,GID为“everybody”。我使用文件浏览器在SD卡上创建了目录,然后使用相同的文件浏览器将文件从网络驱动器复制到目录中。

为什么目录不可读的任何想法?以及哪个用户是我的应用程序运行?看起来“其他”的权限(“771”中的“1”)适用于我的应用,但我不知道为什么。

谢谢!

0 个答案:

没有答案