希望能给我指明正确的方向,告诉我如何修复我的应用程序,这样我就可以读写一个简单的 .txt 文件。
我想我已经尝试了万维网上的所有解决方案,但我想告诉我应该尝试什么。
我尝试过的事情:
bool value = QJniObject::callStaticMethod<jboolean>("android/os/Environment","isExternalStorageManager");
if(!value){
QJniObject filepermit = QJniObject::getStaticObjectField("android/provider/Settings","ACTION_MANAGE_APP_ALL_FILES_ACCES_PERMISSION","Ljava/lang/string;");
//you must changing the YOURPKGNAME at below
QJniObject pkgName = QJniObject::fromString("package:org.qtproject.example.robotinterfaceandroidqt");
QJniObject parsedUri = QJniObject::callStaticObjectMethod(
"android/net/Uri",
"parse","(Ljava/lang/String;)Landroid/net/Uri;",
pkgName.object<jstring>());
QJniObject intent("android/content/Intent",
"(Ljava/lang/String;Landroid/net/Uri;)V",
filepermit.object<jstring>(),parsedUri.object());
QtAndroidPrivate::startActivity(intent, 0);
}else{
qDebug() << "NEW PERMISSION IS NOT GRANTED";
}
这给了我一个允许访问的提示屏幕,但在允许访问所有文件时,它只是全灰色,不能设置为访问所有文件的权限。
我尝试过的另一件事:
int counter = 0;
bool permission(){
auto result = QtAndroidPrivate::checkPermission("android.permission.MANAGE_EXTERNAL_STORAGE").result();
if(result == QtAndroidPrivate::PermissionResult::Denied){
result = QtAndroidPrivate::requestPermission(QString("android.permission.MANAGE_EXTERNAL_STORAGE")).result();
counter++;
if(counter > 10)
qDebug() << "CANNOT GIVE THAT KIND OF PERMISSION";
permission();
}else{
counter = 0;
return true;
}
return false;
}
也用
EXTERNAL_READ_STORAGE
尝试过,甚至用qts自己的QtAndroidPrivate::Storage
写,但没有任何运气。
我正在使用 qt、cmake、sdk 31 构建面向 android 11 的应用程序,
更新和澄清。
在我的应用程序中,我尝试创建一个 txt 文件来保存 JSON 数据,它在设备上创建一个文件,但我无法打开和写入该文件。它给出的错误是
我尝试了以下权限请求:
auto result = QtAndroidPrivate::checkPermission("android.permission.MANAGE_DOCUMENTS").result();
if(result == QtAndroidPrivate::PermissionResult::Denied){
result = QtAndroidPrivate::requestPermission(QString("android.permission.MANAGE_DOCUMENTS")).result();
}
有什么想法吗?
整个文件的东西:
QString filename = QFileDialog::getSaveFileName();
filename = filename + ".txt";
qDebug() << "the file name is : " + filename;
ui->startPageProgramName->setText(test.toString());
auto result = QtAndroidPrivate::checkPermission("android.permission.MANAGE_DOCUMENTS").result();
if(result == QtAndroidPrivate::PermissionResult::Denied){
result = QtAndroidPrivate::requestPermission(QString("android.permission.MANAGE_DOCUMENTS")).result();
}
QFile file(filename);
if(!file.open(QIODevice::WriteOnly)){
qDebug() << file.errorString();
return;
}else{
QTextStream out(&file);
out << "QString::fromStdString(mainPro_->programToString())";
qDebug() << &out;
out.flush();
out << "testing som more";
out << "agian";
file.close();
}