Qt for Android 调用原生Activity 三步走,开启android的潘多拉世界。

花了一天时间开启这个hellowrld.所有的东西都复制黏贴了就是调用不到原生的。哎那些写书的大佬能不能多填点坑,这条路子实在是太艰难了。还没开始就结束了。望而却步。现在就让我把这个小坑填掉吧。

1.android studio 的应用文件拷贝到Qt 工程android目录下

  主要有src和res 下的layout

2.配置Qt AndroidMainfest.xml 添加注册你自定义的activity例如:

 <activity android:name="com.demo.testactivity.MainActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop">
  <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> <intent-filter>
    <action android:name="com.demo.testactivity.MainActivity"/>
    <category android:name="android.intent.category.DEFAULT"/>

</intent-filter></activity>

//这个是拷贝某大佬的代码修改修改。

#define CHECK_EXCEPTION() \
if(env->ExceptionCheck())\
{\
qDebug() << "exception occured";\
env->ExceptionClear();\
}

void Widget::on_pushButton_clicked()
{
QAndroidJniEnvironment env;
QAndroidJniObject action = QAndroidJniObject::fromString("com.demo.testactivity.MainActivity");
 QAndroidJniObject intent("android/content/Intent","(Ljava/lang/String;)V", action.object<jstring>());
QtAndroid::startActivity(intent, 0);
CHECK_EXCEPTION()//这里可有可无,但是人家大佬都这么用了。那就加上吧。便于debug
}

走到这里你发现诶怎么qt原生界面无论怎么跳转都跳转不到java的原生界面是不是开始各种怀疑各种骂爹,什么狗屁不通代码,狗日的我要放弃了我要放弃,android要么原生。什么qt for android 去你麻痹的就是个鸡肋。。。。我真的要放弃了。要不我们在试试。。。认真观察下列划掉的两行代码。。。。至于什么原因呢debug应该会知道原因。

package com.demo.testactivity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("hello world");
}
}

运行,跳转。。。hello world 

happly enjoy

 

 

 

 

 

 

 

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值