- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试执行这段 Java 代码:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
使用 Qt QAndroidJniObject(我正在 Android 上部署 Qt 应用程序)。
我这样做了:
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
if ( activity.isValid() )
{
QAndroidJniObject serviceName = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Context","POWER_SERVICE");
if ( serviceName.isValid() )
{
QAndroidJniObject powerMgr = activity.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;",serviceName.object<jobject>());
if ( powerMgr.isValid() )
{
jint levelAndFlags = QAndroidJniObject::getStaticField<jint>("android/os/PowerManager","SCREEN_DIM_WAKE_LOCK");
QAndroidJniObject tag = QAndroidJniObject::fromString( "My Tag" );
QAndroidJniObject wakeLock = powerMgr.callObjectMethod("newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager/WakeLock;", levelAndFlags,tag.object<jstring>());
if ( wakeLock.isValid() )
wakeLock.callMethod<void>("acquire", "()V");
else
assert( false );
}
}
}
从调试器检查:levelAndFlags
是正确的 (6),tag
是正确的(“我的标签”),但是 wakeLock.isValid()
返回 false。
这行肯定有问题:
QAndroidJniObject wakeLock = powerMgr.callObjectMethod("newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager/WakeLock;", levelAndFlags,tag.object<jstring>());
但是我想不通是什么...
最佳答案
嵌套类名需要特殊语法:
Landroid/os/PowerManager/WakeLock
应该是:
Landroid/os/PowerManager$WakeLock
而且有效!
关于android - 无法使用 QAndroidJniObject 调用 PowerManager.WakeLock.newWakeLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131470/
我注意到 Qt 文档提供了两种调用 android native 方法的方法,但我不知道何时使用 QAndroidJniObject::callMethod 以及何时使用 QAndroidJniObj
这是从我的自定义 java 类调用三个函数的代码: QAndroidJniObject datafile = QAndroidJniObject::fromString(path); QAndroid
当我从 MyActivity 中的 java 方法返回一个字符串时,我可以用 打印它 QAndroidJniObject asdf = QtAndroid::androidActivity().cal
我正在尝试从 native 函数返回 QAndroidJniObject。使用 Qt 5.5 和 QtAndroidExtras。这是我的第一个天真的实现: QAndroidJniObject doS
尝试从 C++ 端创建一个 java 类,但总是崩溃 appBucksAdv.java package adv; import org.qtproject.qt5.android.bindings.Q
我正在尝试执行这段 Java 代码: PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerMa
从一个用 Qt Creator 创建的空 Qt for Android 项目开始,我如何执行原生 Java 代码? 例如,如果我有这个 java 方法: class HelloJava { p
我正在编写一个需要从 Android Gallery 获取图像路径的代码。该代码是使用 QAndroidJniObject 编写的,以便在 Qt 中编写等效的 java 代码 我的问题是我没有弄清楚如
我想在我的 qml 应用程序中使用 Android WebView。提供的默认 WebView 对象使用 native 呈现,但缺少一些功能(例如拦截网络请求并阻止它们的能力)。我知道 Qt 允许您使
我正在尝试使用 QAndroidJniObject。作为测试,我只调用了 2 个 Java 函数,一个返回一个 int,另一个返回一个字符串。 当返回一个 int 时,这段代码可以正常编译: jint
我是一名优秀的程序员,十分优秀!