如何在安卓版Qt上获取应用程序参数
How to get application arguments on Qt for android
我有一个Qt应用程序,它在AndroidManifest中定义了文件关联.xml所以当我在浏览器中选择一个文件时,我会得到一个相关应用程序的列表。我的应用程序在列表中,但是当我选择它时,文件路径不会在我的main()
方法的argv
列表中传递。如何将路径传递给应用程序,以及如何在Qt/C++中拥有它?
经过一些研究,我提出了以下工作解决方案:
void loadAndroidFile()
{
#ifdef Q_OS_ANDROID
QAndroidJniObject activity = QtAndroid::androidActivity();
if (activity.isValid()) {
QAndroidJniObject intent = activity.callObjectMethod("getIntent", "()Landroid/content/Intent;");
if (intent.isValid()) {
QAndroidJniObject data = intent.callObjectMethod("getData", "()Landroid/net/Uri;");
if (data.isValid()) {
QAndroidJniObject path = data.callObjectMethod("getPath", "()Ljava/lang/String;");
if (path.isValid())
// Here path.toString() returns the path of the input file
QMetaObject::invokeMethod(rootComponent, "setSourcePath", Q_ARG(QVariant, QVariant("file://" + path.toString())));
}
}
}
#endif
}
相关文章:
- 在C++中获取应用程序窗口的大小
- 如何从二进制文件中获取应用程序的版本号?
- 获取应用程序图标时出现问题
- 如何以编程方式获取应用程序的内存使用情况
- Windows编程:为什么我们要将lParam转换为CREATESTRUCT来获取应用程序状态
- 获取应用程序窗口的完整目录
- 获取"应用程序名称"以及按键
- 获取应用程序的内存使用情况时出错
- 正在从应用程序中获取应用程序版本
- 如何在安卓版Qt上获取应用程序参数
- 在 Linux 上的 Qt 中获取应用程序图标 URL
- 从任务管理器获取应用程序故障转储中显示的状态在 Windows 上是否准确
- Boost选项-获取应用程序名称
- CAppModule与CAtlExeModuleT,获取应用程序消息循环
- 如何获取应用程序的所有鼠标事件
- 获取应用程序运行实例的句柄
- 在Qt中获取应用程序外部的键盘事件
- 如何在GetModuleFileName (Win32 API)中使用POCO获取应用程序文件名
- 使用打开的端口获取应用程序
- Win32-获取应用程序的主Wnd句柄