• 【JAVA UI】HarmonyOS如何跳转三方的地图导航


     参考资料

    高德(https://lbs.amap.com/api/amap-mobile/guide/android/route)

    百度(http://lbsyun.baidu.com/index.php?title=uri/api/ios&qq-pf-to=pcqq.c2c)

    腾讯(https://lbs.qq.com/uri_v1/guide-mobile-navAndRoute.html)

    【JAVA UI】abilitySlice或ability以Action方式跳转

    【JAVA UI】HarmonyOS 定位的功能基本实现

    代码实现

    • xml布局绘画

    在xml布局绘制三个Text组件分别为“百度地图”,“腾讯地图”,“高德地图”,代码如下

    1. <DirectionalLayout
    2. xmlns:ohos="http://schemas.huawei.com/res/ohos"
    3. ohos:height="match_parent"
    4. ohos:width="match_parent"
    5. ohos:alignment="center"
    6. ohos:orientation="vertical">
    7. <Text
    8. ohos:id="$+id:start_baidu1"
    9. ohos:height="100vp"
    10. ohos:width="match_parent"
    11. ohos:text_alignment="center"
    12. ohos:background_element="$graphic:background_ability_main"
    13. ohos:layout_alignment="horizontal_center"
    14. ohos:text="百度地图"
    15. ohos:text_size="40vp"
    16. />
    17. <Text
    18. ohos:id="$+id:start_tongxun"
    19. ohos:height="100vp"
    20. ohos:width="match_parent"
    21. ohos:text_alignment="center"
    22. ohos:background_element="#ed6161"
    23. ohos:layout_alignment="horizontal_center"
    24. ohos:text="腾讯地图"
    25. ohos:text_size="40vp"
    26. />
    27. <Text
    28. ohos:id="$+id:start_gaode"
    29. ohos:height="100vp"
    30. ohos:width="match_parent"
    31. ohos:text_alignment="center"
    32. ohos:background_element="$graphic:background_ability_main"
    33. ohos:layout_alignment="horizontal_center"
    34. ohos:text="高德地图"
    35. ohos:text_size="40vp"
    36. />
    37. DirectionalLayout>
    • java代码实现

      百度地图导航

      1. Intent intent = new Intent();
      2. try {
      3. Operation operation = new Intent.OperationBuilder()
      4. .withAbilityName("")
      5. .withDeviceId("")
      6. .withUri(Uri.parse("baidumap://map/navi?location="+lon+","+lat+"&src=andr.baidu.openAPIdemo"))
      7. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      8. .build();
      9. intent.setOperation(operation);
      10. startAbility(intent);
      11. }catch (Exception e){
      12. e.printStackTrace();
      13. }

      高德地图

      1. try {
      2. Intent intent = new Intent();
      3. Operation operation = new Intent.OperationBuilder()
      4. .withAbilityName("")
      5. .withDeviceId("")
      6. .withAction("android.intent.action.VIEW")
      7. .withUri(Uri.parse("amapuri://route/plan/?sid=&slat=39.92848272&slon=116.39560823&sname=A&did=&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0"))
      8. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      9. .build();
      10. intent.setOperation(operation);
      11. startAbility(intent);
      12. }catch (Exception e){
      13. e.printStackTrace();
      14. }

      腾讯地图

      1. Intent intent = new Intent();
      2. Operation operation = new Intent.OperationBuilder()
      3. .withAbilityName("")
      4. .withDeviceId("")
      5. .withUri(Uri.parse("qqmap://map/routeplan?type=drive&from=清华&fromcoord=39.994745,116.247282&to=怡和世家&tocoord=39.867192,116.493187&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"))
      6. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      7. .build();
      8. intent.setOperation(operation);
      9. startAbility(intent);

      全部代码

      1. package com.example.myapplication.slice;
      2. import com.example.myapplication.ResourceTable;
      3. import ohos.aafwk.ability.AbilitySlice;
      4. import ohos.aafwk.content.Intent;
      5. import ohos.aafwk.content.Operation;
      6. import ohos.agp.components.Component;
      7. import ohos.utils.net.Uri;
      8. public class MainAbilitySlice extends AbilitySlice {
      9. private float lat=118.803714f;
      10. private float lon=32.093512f;
      11. @Override
      12. public void onStart(Intent intent) {
      13. super.onStart(intent);
      14. super.setUIContent(ResourceTable.Layout_ability_main);
      15. findComponentById(ResourceTable.Id_start_baidu1).setClickedListener(new Component.ClickedListener() {
      16. @Override
      17. public void onClick(Component component) {
      18. toBaidu();
      19. }
      20. });
      21. findComponentById(ResourceTable.Id_start_tongxun).setClickedListener(new Component.ClickedListener() {
      22. @Override
      23. public void onClick(Component component) {
      24. toTencent();
      25. }
      26. });
      27. findComponentById(ResourceTable.Id_start_gaode).setClickedListener(new Component.ClickedListener() {
      28. @Override
      29. public void onClick(Component component) {
      30. toGaodeNavi();
      31. }
      32. });
      33. }
      34. // 百度地图
      35. public void toBaidu(){
      36. Intent intent = new Intent();
      37. try {
      38. Operation operation = new Intent.OperationBuilder()
      39. .withAbilityName("")
      40. .withDeviceId("")
      41. .withUri(Uri.parse("baidumap://map/navi?location="+lon+","+lat+"&src=andr.baidu.openAPIdemo"))
      42. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      43. .build();
      44. intent.setOperation(operation);
      45. startAbility(intent);
      46. }catch (Exception e){
      47. e.printStackTrace();
      48. }
      49. }
      50. // 高德地图
      51. public void toGaodeNavi(){
      52. try {
      53. Intent intent = new Intent();
      54. Operation operation = new Intent.OperationBuilder()
      55. .withAbilityName("")
      56. .withDeviceId("")
      57. .withAction("android.intent.action.VIEW")
      58. .withUri(Uri.parse("amapuri://route/plan/?sid=&slat=39.92848272&slon=116.39560823&sname=A&did=&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0"))
      59. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      60. .build();
      61. intent.setOperation(operation);
      62. startAbility(intent);
      63. }catch (Exception e){
      64. e.printStackTrace();
      65. }
      66. }
      67. // 腾讯地图
      68. public void toTencent(){
      69. Intent intent = new Intent();
      70. Operation operation = new Intent.OperationBuilder()
      71. .withAbilityName("")
      72. .withDeviceId("")
      73. .withUri(Uri.parse("qqmap://map/routeplan?type=drive&from=清华&fromcoord=39.994745,116.247282&to=怡和世家&tocoord=39.867192,116.493187&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"))
      74. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      75. .build();
      76. intent.setOperation(operation);
      77. startAbility(intent);
      78. }
      79. }

      FAQ

      鸿蒙应用跳转到Android应用

      1. Intent intent = new Intent();
      2. Operation operation = new Intent.OperationBuilder()
      3. //activity 名称
      4. .withAbilityName("xxx.MyTestActivity")
      5. //包名
      6. .withBundleName("包名") .withDeviceId("")
      7. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      8. .build();
      9. intent.setOperation(operation);
      10. startAbility(intent);

      鸿蒙跳转微信

      1. Intent intent1=new Intent();
      2. Operation operation=new Intent.OperationBuilder()
      3. .withAction("android.intent.action.MAIN")
      4. .withBundleName("com.tencent.mm")
      5. .withAbilityName("com.tencent.mm.ui.LauncherUI")
      6. .withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
      7. .build();
      8. intent1.addEntity("android.intent.category.LAUNCHER");
      9. intent1.setOperation(operation);
      10. startAbility(intent1);
    欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/topic/0204948225088990207?fid=0102683795438680754?ha_source=zzh
  • 相关阅读:
    MLC--机器学习编译的课程笔记
    电脑重装系统后如何设置 win11 的默认登录方式
    三七总皂苷脂质体纳米粒子修饰负载RNA核糖核酸(实验注意事项)
    学校网页设计成品 基于HTML+CSS+JavaScript仿山东财经大学官网 学校班级网页制作模板 校园网页设计成品
    Java学习笔记(四)
    Android 12(S) 图像显示系统 - BufferQueue的工作流程(十一)
    Isito 入门(九):安全认证
    RedisTemplate map集合使用说明-opsForHash(三)
    查看linux的内存使用情况
    HTTPS-各种加密方式
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/126261499