想让应用点击back键到后台运行,在网上找的java实现home键效果,自己翻译成c++代码。但是效果不对,点击返回弹出个“使用以下方法打开”的对话框。
java代码是这样:
Intent i= new Intent(Intent.ACTION_MAIN);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
我的代码是这样的:
QAndroidJniObject action = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Intent", "ACTION_MAIN");
QAndroidJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", action.object<jstring>());
if(intent.isValid() && action.isValid())
{
QAndroidJniObject category = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Intent", "CATEGORY_HOME");
jint flag = QAndroidJniObject::getStaticField<jint>("android/content/Intent", "FLAG_ACTIVITY_NEW_TASK");
if(category.isValid())
{
intent.callObjectMethod("setFlags", "(LI;)Landroid/content/Intent", flag);
intent.callObjectMethod("addCategory", "(Ljava/lang/String;)Landroid/content/Intent", category.object<jstring>());
QtAndroid::startActivity(intent, 0);
qInfo() << "minimize application";
}
}
或者有别的方法也可以呀。
java代码是这样:
Intent i= new Intent(Intent.ACTION_MAIN);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
我的代码是这样的:
QAndroidJniObject action = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Intent", "ACTION_MAIN");
QAndroidJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", action.object<jstring>());
if(intent.isValid() && action.isValid())
{
QAndroidJniObject category = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Intent", "CATEGORY_HOME");
jint flag = QAndroidJniObject::getStaticField<jint>("android/content/Intent", "FLAG_ACTIVITY_NEW_TASK");
if(category.isValid())
{
intent.callObjectMethod("setFlags", "(LI;)Landroid/content/Intent", flag);
intent.callObjectMethod("addCategory", "(Ljava/lang/String;)Landroid/content/Intent", category.object<jstring>());
QtAndroid::startActivity(intent, 0);
qInfo() << "minimize application";
}
}
或者有别的方法也可以呀。