Qt for Android 外置SD卡写入
洗砚 2020-08-07 06:36:06 Qt 开发的Android App动态设置权限本地可以读写,但是外置的SD卡只能读取无法写入, Qt 5.14.2+ SDK 26.1.1+NDK21.2,手机系统7.0+:
#include <QtAndroid>
bool checkPermission() {
QtAndroid::PermissionResult r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
if(r == QtAndroid::PermissionResult::Denied) {
QtAndroid::requestPermissionsSync( QStringList() << "android.permission.WRITE_EXTERNAL_STORAGE" );
r = QtAndroid::checkPermission("android.permission.WRITE_EXTERNAL_STORAGE");
if(r == QtAndroid::PermissionResult::Denied) {
return false;
}
}
return true;
}
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QFile file("/storage/3645-16B6/test.txt");
if(file.exists())
{
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug()<<"requestPermissions ---------------";
}else{
qDebug()<<"requestPermissions --------------- 11111111";
}
}
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>