经过坚果派内部的测试,最后发现,其实这个问题还是有解决的办法的。不信,你继续往后读。
一、创建项目
image-20240102142924183
i
二、Want学习
Want的定义与用途
Want是一种对象,用于在应用组件之间传递信息。
其中,一种常见的使用场景是作为startAbility()
方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。
Want用法示意
Want的类型
显式Want:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。
显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。
import Want from '@ohos.app.ability.Want';
let wantInfo: Want = {
deviceId: '', // deviceId为空表示本设备
bundleName: 'com.nut.17752170152',
abilityName: 'FuncAbility',
}
隐式Want:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。
当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用skills标签来定义需要使用的能力,并由系统匹配声明支持该请求的所有应用来处理请求。例如,需要打开一个链接的请求,系统将匹配所有声明支持该请求的应用,然后让用户选择使用哪个应用打开链接。
import Want from '@ohos.app.ability.Want';
let wantInfo: Want = {
// uncomment line below if wish to implicitly query only in the specific bundle.
// bundleName: 'com.example.myapplication',
action: 'ohos.want.action.search',
// entities can be omitted
entities: [ 'entity.system.browsable' ],
uri: 'https://www.test.com:8080/query/student',
type: 'text/plain',
};
三、导航
用法
cat=android.intent.category.DEFAULT
dat=androidamap://navi?sourceApplication=appname&poiname=fangheng&lat=36.547901&lon=104.258354&dev=1&style=2
pkg=com.autonavi.minimap
参数说明
参数 | 说明 | 是否必填 |
navi | 服务类型 | 是 |
sourceApplication | 第三方调用应用名称。如 amap | 是 |
poiname | POI 名称 | 否 |
lat | 纬度 | 是 |
lon | 经度 | 是 |
dev | 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密) | 是 |
style | 导航方式(0 速度快;1 费用少;2路程短;3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7;躲避收费和拥堵;8 不走高速躲避收费和拥堵)由于与用户本地设置冲突,Android平台自8.2.6版本起不支持该参数,偏好设置将以用户本地设置为准 | 是 |
关键代码
let context = getContext(this) as common.UIAbilityContext
context.startAbility({
uri: "androidamap://navi?sourceApplication=appname&lat=" + this.latitude + "&lon=" + this.longitude + "&dev=1",
action: "android.intent.action.VIEW"
})
效果图
i
四、路径规划
用法
act=android.intent.action.VIEW
cat=android.intent.category.DEFAULT
dat=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
pkg=com.autonavi.minimap
参数说明:
参数 | 说明 | 是否必填 |
route | 服务类型 | 是 |
sourceApplication | 第三方调用应用名称。如 amap | 是 |
sid | 起点的POI ID(例如天安门为B000A60DA1) | 否 |
slat | 起点纬度。如果不填写此参数则自动将用户当前位置设为起点纬度。 | 否 |
slon | 起点经度。如果不填写此参数则自动将用户当前位置设为起点经度。 | 否 |
sname | 起点名称 | 否 |
did | 终点的POI ID (例如天安门为B000A60DA1) | 否 |
dlat | 终点纬度 | 是 |
dlon | 终点经度 | 是 |
dname | 终点名称 | 否 |
dev | 起终点是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密) | 是 |
m | 驾车方式 =0(速度快)=1(费用少) =2(路程短)=3 不走高速 =4(躲避拥堵)=5(不走高速且避免收费) =6(不走高速且躲避拥堵) =7(躲避收费和拥堵) =8(不走高速躲避收费和拥堵)。公交 =0(速度快)=1(费用少) =2(换乘较少)=3(步行少)=4(舒适)=5(不乘地铁)由于与用户本地设置冲突,Android平台7.5.9版本起不支持该参数,偏好设置将以用户本地设置为准 | 是 |
t | t = 0(驾车)= 1(公交)= 2(步行)= 3(骑行)= 4(火车)= 5(长途客车) (骑行仅在V7.8.8以上版本支持) | 是 |
rideType | 仅当 t = 3 时该参数生效。rideType = elebike 电动车,rideType = bike/为空 自行车(电动车规划仅在V8.65.0及以上版本支持) |
输入起点和终点,搜索公交、驾车或步行的线路。支持版本 V4.2.1 起。
关键代码
let context = getContext(this) as common.UIAbilityContext
context.startAbility({
uri: "amapuri://route/plan/?did=&dlat=36.07&dlon=103.82&dname=坚果派17752170152&dev=0&t=0",
action: "android.intent.action.VIEW"
})
效果
image-202
五、Web组件实现地图图显示
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct MainPage {
controller: web_webview.WebviewController = new web_webview.WebviewController()
build() {
Row() {
Column() {
Web({ src: $rawfile("drive.html"), controller: this.controller })
}
.width('100%')
}
.height('100%')
}
}
效果图
im
六、总结
一个人走的快,一群人走的远,也得益于我是坚果派的成员,互相学习,一起成长,精彩的内容才可以带给大家。比如这次web组件和want组件的学习。