我在android mobile上创建了一个文件夹。
这是我的代码:
QDir mypath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
if(!mypath.cd("Plugin"))
{
if(mypath.mkdir("Plugin"))
qDebug() << "path created";
else
qDebug() << "path not created";
}
我在手机上打开文件管理器,我可以看到该文件夹已经创建。但当我将手机连接到PC的方向与文件夹没有显示的方向相同时。
问题出在哪里?谢谢
答案 0 :(得分:0)
您必须为您创建的所有文件调用MediaScannerConnection.scanFile。
例如,Nexus 4 not showing files via MTP
调用java函数可以编写以下内容
#include <QAndroidJniObject>
void CAndroid::rescanFolder(QString dest)
{
QAndroidJniObject java_app("org/programm/java_app");
QAndroidJniObject param = QAndroidJniObject::fromString(dest);
java_app.callMethod<jint>("rescanFolder","(Ljava/lang/String;)I",param.object<jstring>());
}
并修改java代码
int rescanFolder(String dest) {
File[] files = new File(dest).listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile();
}
});
if(files!=null)
{
String[] paths = new String[files.length];
for (int co=0; co< files.length; co++)
{
paths[co] = files[co].getAbsolutePath();
}
MediaScannerConnection.scanFile(QtNative.activity(), paths, null, null);
files = new File(dest).listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
for (int co=0; co<files.length; co++)
rescanFolder(files[co].getAbsolutePath());
}
return 0;
}