私のアプリケーションをAndroid 6.0に対応させる新しいruntimePermission機能を使用する必要があります。現在、Qtはこれをサポートしていません。runtimePermissionsのQtでjava-functionsを呼び出す
は私が明示的に、私はいくつかのネイティブJavaコードを使用する必要がありますと思う:ContextCompat.javaとそれぞれ
ActivityCompat.javaから
checkSelfPermission and requestPermissions
これを行う方法を経由しているようですここ
#include <QtAndroidExtras> and QAndroidJniObject::callStaticMethod
は、私は私の簡単なテストプログラムから、これまで持っているものです。
void MainWindow::on_pushButton_clicked()
{
jint res = 9999;
QAndroidJniObject javaCall = QAndroidJniObject::fromString("android.permission.CAMERA");
res = QAndroidJniObject::callStaticMethod<jint>("JavaSrc/ContextCompat",
"checkSelfPermission",
"(Ljava/lang/String;)V",
javaCall.object<jstring>());
ui->label->setText(QString::number(res));
qDebug() << Res;
}
SDKパスのContextCompatを私のResourceFolderにコピーしました。私は私のアプリケーションのための余分なJavaファイルを作成していない、これは問題がありますか?
権限が付与されているかどうかにかかわらず、「res」の戻り値は常に0(0 =許可されています)です。だから、私のアプローチはややうまくいくように見えますが、それは想定されている方法ではありません。
私は、checkSelfPermissionが私のQt-Appにリンクされていないと思います。
Javaファイルであるか、私のQtコードである可能性がありますが、わかりません。
これを行う正しい方法は何ですか?