0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS百度网盘客户端可适配手机页面

OpenHarmony技术社区 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2022-01-04 13:58 次阅读

什么是菟盘?菟盘是由百度网盘开放平台提供的 API 开发的一个百度网盘客户端。主要提供网盘文件浏览,文件下载等。(100M 以下文件不限速,超过 100M 就是祖传 100k/s了,支持会员加速)

百度网盘开放平台:

https://pan.baidu.com/union/doc/

应用主入口

本应用主入口是 MainAbility,当打开应用时,会判断用户是否已登录,未登录会跳转到登录页面,已登录会跳转到主页。

登录界面

登录通过 webview 来请求百度的 access_token:

接入流程文档:

https://pan.baidu.com/union/doc/0ksg0sbig

这里需要注意一个细节,官方文档提供的授权地址是 PC 版的,需要改造一下,来适配手机页面。

原理是先在百度 H5 端登录,登录完成后重定向至授权地址。

/*
百度应用信息
*/
StringYOUR_CLIENT_ID="";//填自己的
StringYOUR_REGISTERED_REDIRECT_URI="https://dsttl3.cn/baiduapi.html";//需要和自己在百度网盘开放平台填写的相同,有个地址就行,不需要在服务器操作。当然也可以在服务器请求token后直接返回。
StringYOUR_CLIENT_SECRET="";//填自己的

/**
*@return移动端登录授权链接
*/

publicStringgetLoginUrl(){

Stringurl="https://openapi.baidu.com/oauth/2.0/authorize?response_type=code"+
"&client_id="+YOUR_CLIENT_ID+
"&redirect_uri="+YOUR_REGISTERED_REDIRECT_URI+
"&scope=basic,netdisk&force_login=0";
try{
url=URLEncoder.encode(url,"UTF-8");
url="https://wappass.baidu.com/passport/?login&tpl=wimn&sms=1®type=1&u="+
url+
"&extrajson=%7b%22src%22%3a%22se_000000%22%7d#/password_login";
returnurl;
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
returnnull;
}
}

/**
*@returnAccess_token授权链接
*/

publicStringgetAccessTokenUrl(StringCODE){
return"https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code"+
"&code="+CODE+
"&client_id="+YOUR_CLIENT_ID+
"&client_secret="+YOUR_CLIENT_SECRET+
"&redirect_uri="+YOUR_REGISTERED_REDIRECT_URI;
}

webview 内的操作:

WebViewwebView=(WebView)findComponentById(ResourceTable.Id_login_wv);
webView.getWebConfig().setJavaScriptPermit(true);
webView.setWebAgent(newWebAgent(){
@Override
publicbooleanisNeedLoadUrl(WebViewwebView,ResourceRequestrequest){
if(request.getRequestUrl().toString().startsWith("https://dsttl3.cn")){//这个链接是你所填写的YOUR_REGISTERED_REDIRECT_URI这里只写了开头,效果相同
Stringcode=request.getRequestUrl().toString().split("code=")[1];
StringAccess_token_url=newAppUtils().getAccessTokenUrl(code);
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
OkHttpClientclient=newOkHttpClient();
Requestrequest=newRequest.Builder().url(Access_token_url)
.header("User-Agent","pan.baidu.com")
.build();
Callcall=client.newCall(request);
StringaccessTokenJson=call.execute().body().string();
AccessTokenaccessToken=newGson().fromJson(accessTokenJson,AccessToken.class);
System.out.println(accessToken.getAccess_token());
getUITaskDispatcher().asyncDispatch(newRunnable(){
@Override
publicvoidrun(){
Preferencespreferences=newDataUtils().getPreferences(getApplicationContext());
preferences.putString("token",accessToken.getAccess_token());
preferences.flush();
Intentintent1=newIntent();
Operationoperation=newIntent.OperationBuilder()
.withBundleName(MyApp.bundleName)
.withAbilityName("cn.dsttl3.tupan.Ability.IndexAbility")
.build();
intent1.setOperation(operation);
startAbility(intent1);
terminateAbility();//因为登录完成后无需返回改界面,通过terminateAbility()方法销毁该界面
}
});
}catch(IOExceptione){
e.printStackTrace();
}
}
}).start();
returnfalse;
}
returnsuper.isNeedLoadUrl(webView,request);
}
});
webView.load(newAppUtils().getLoginUrl());//这里是上面转换链接的方法

当用户完成登录后,token 就保存到本地了。

主页面

使用 ListContainer 来显示文件列表:

代码有点多,不在本文介绍了,可以参考 ListContainer 的相关文档。

这里介绍一下防手滑操作,当该应用只有一个界面时,一不小心返回,导致应用直接退出,可以使用这个方法进行一个提醒。

/**
*防止误退出操作
*/
booleanexit=true;
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventkeyEvent){
if(exit){
newToastDialog(getContext()).setText("再次返回退出程序").show();
exit=false;
newThread(newRunnable(){
@Override
publicvoidrun(){
Time.sleep(3000);//三秒内再次返回退出程序
exit=true;
}
}).start();
returntrue;
}else{
returnfalse;
}
}

下载页面

提供两种下载方式,本地下载和 Aria2 下载:

解析处理的链接不能直接下载,必需要设置 User-Agent 字段为 pan.baidu.com 才能正常下载。

怎么获取该应用

①自己编译,本文附件提供源码

需要修改的地方:

包名:config.json 下的 bundleName和 cn.dsttl3.tupan 目录下 MyApp.java 的 bundleName。不修改导致无法真机运行和页面跳转失败。

填写百度开放平台应用信息:cn.dsttl3.tupan.utils 目录下的 AppUtils.java:


/*
百度应用信息
*/
StringYOUR_CLIENT_ID="";//填自己的
StringYOUR_REGISTERED_REDIRECT_URI="https://dsttl3.cn/baiduapi.html";//需要和自己在百度网盘开放平台填写的相同,有个地址就行,不需要在服务器操作。当然也可以在服务器请求token后直接返回。
StringYOUR_CLIENT_SECRET="";//填自己的

签名文件:这个需要自己操作。

②下载测试版

不需要自己下载代码进行编译,留言或私信华为账号,我会给你添加测试。然后通过华为官方发送的短信进行下载。

https://harmonyos.51cto.com/posts/9636

原文标题:HarmonyOS版百度网盘客户端

文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PC
    PC
    +关注

    关注

    9

    文章

    2065

    浏览量

    154007
  • 编译
    +关注

    关注

    0

    文章

    653

    浏览量

    32803
  • HarmonyOS
    +关注

    关注

    79

    文章

    1967

    浏览量

    30005

原文标题:HarmonyOS版百度网盘客户端

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ★★★【<百度网1T永久容量领取教程>】

    只需要登陆百度云电脑客户端--可获100G容量、百度云移动(Andriod版、iPhone版、iPad版)--可获360G容量、再支付1元钱就能换购564G容量,总共就是1T哦!
    发表于 08-22 09:19

    AD15百度网下载

    AD15百度网下载
    发表于 12-14 01:24

    百度网限速背后 领头羊为何捉襟见肘

    近日,百度网对免费用户限速100-200kb/秒的问题再引起热议。对此,百度网盘回应称,此举是为了控制整个产品的运营成本,帮助产品更长久的活下去。但此说法似乎难以服众。实际上,为实现经营盈利,
    的头像 发表于 06-23 10:52 9238次阅读

    百度网从存储工具到个人云服务操作系统

    经过7年的发展,百度网已经积累了6个亿的用户规模,日活跃量在1亿以上。百度网的月付费用户已经超过千万,与内容平台合作推出的联合会员,日订单量已经超过了10万。
    发表于 07-31 10:48 2030次阅读

    金士顿联手百度网开启无缝存储时代

    2019年8月12日,中国个人云存储领军企业百度网宣布与全球存储领袖金士顿达成合作,通过金士顿DataTraveler Locker+ G3(DTLPG3)加密闪存盘与百度网的存储
    发表于 08-16 10:55 642次阅读

    百度网推传输助手功能 高效便捷收集并发送云端文件

    1月3日消息,百度网微信公众号介绍了百度网新功能:传输助手。这是一个百度网开发的高效便捷收
    的头像 发表于 01-03 15:39 4365次阅读

    市场再迎新玩家,百度网或将不能持续高枕无忧的日子

    微博上关于“百度网疑推出国际版Dubox”的话题,将百度网拉回到大众的视线里。而紧跟在话题后面的“该
    的头像 发表于 09-24 10:34 2163次阅读

    百度网国际版 Dubox 不限速和百度网盘成功融合

    相信关注我的读者中没有几个不知道【百度网】了,也是大家相当熟悉的产品了,它也是国内网的佼佼者。 最近,百度网进军海外了!不查不知道,一
    的头像 发表于 09-27 11:17 3867次阅读

    百度网PC版7.0.6更新:新增文档大图视图模式

    日前,百度网PC版迎来了最新的7.0.6版本,在这个版本中,百度网盘带来了一个很实用的新功能,新增了文档的大图视图模式。 文档大图视图模式可以方便用户快速找到文档,尤其是文档很多的时候,该功能会让
    的头像 发表于 10-29 16:20 3271次阅读

    百度网会员体系全新升级

    不知不觉,百度网已经迎来了8周年。
    的头像 发表于 11-18 09:01 3785次阅读

    百度网PC版7.0.9首页全新改版 微信文件自动备份

    上周末,百度网PC版迎来了新版,也许你已经注意到了,在新版中,百度网的首页进行了全新改版,更简洁了。 此外,最新发布的百度网
    的头像 发表于 12-14 11:59 3381次阅读

    坐拥7亿注册用户,百度网仍被认为是赔本买卖

    苦守8年,市场份额超过85%,坐拥7亿注册用户,百度网仍被认为是赔本买卖。 1月11日,百度网
    的头像 发表于 01-14 10:49 3256次阅读

    百度网三星定制版网友实测不限速

    前几天的三星Galaxy S21国行发布会上,三星宣布与百度合作,推出了特别版百度网,提供2TB的初始免费云存储空间和5GB原画质视频空间。 在去年8月31日,三星决定下线云服务,不再支持相册同步
    的头像 发表于 01-22 17:10 4103次阅读

    百度网盘运营主体变更迁移

    近日,有不少小伙伴发现,打开百度网APP后,弹出了“百度网服务升级”提示,需要同意新的隐私协议许可才能继续使用。
    的头像 发表于 01-25 10:27 3086次阅读

    百度网APP资源下载

    百度网APP资源下载
    发表于 05-06 09:18 3次下载