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

    文章

    1949

    浏览量

    152779
  • 编译
    +关注

    关注

    0

    文章

    613

    浏览量

    32371
  • HarmonyOS
    +关注

    关注

    79

    文章

    1799

    浏览量

    29249

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

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

收藏 人收藏

    评论

    相关推荐

    【重发】百度网Altium Designer 10.1327.26514 update 23

    以至于帖子成为废贴。对此我深感愧疚。 于是,我便耐心的用bt把资源拖了回来,传到了百度网。希望有更好的下载速度,秉着分享的精神,我没有设置密码。而且,我把俄文的说明翻译成了中文,破解说明翻译后,按
    发表于 11-29 22:27

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

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

    【精华】100G海量资料百度网共享中,记得关注分享者

    本帖最后由 249591269 于 2013-8-29 11:03 编辑 申请变色申请加精百度网盘地址:http://pan.baidu.com/share/home?uk=2836238895无需转存,贡献者长期开放资源,关注作者,不定期更新资源{:20:}{:20:}
    发表于 08-27 08:45

    建议论坛将下载文件放到百度网中!

    斑竹,可否将论坛中的文件都放到百度网中,这样论坛中只要发送链接就可以,即不占用论坛的服务器空间,也可以提高大家下载的速度?
    发表于 10-31 15:57

    最新版和经典版 Altium Designer 百度网下载

    最新版和经典版 Altium Designer 百度网下载,不要密码,要快!记得要赞、顶,这是美德啊!Altium Designer 14.0.9.30380http
    发表于 12-25 14:15

    好消息,好消息!PADS_VX 百度网 下载链接

    PADS 最新版 PADS VX ,已给放到百度网 ,免费高速下载 ,完整的安装包 1.67G送给大家享乐 ,相当给力,下载地址 在附件里面了 ![groupid=514]欢乐1+1 QQ群原创精品[/groupid]
    发表于 08-05 11:18

    keil和proteus教程,百度网直接下载,需要的童鞋拿好

    http://pan.baidu.com/s/1o6IAbyE(第一次用百度网分享,但愿不要出问题⊙﹏⊙)
    发表于 01-03 09:57

    AD15百度网下载

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

    AD13/14/15/16安装文件+破解方法百度网分享,需要的领走!

    这是我搜集的各个版本,亲测可用,百度网直接分享,需要的可以下载,盘里面包含了破解文件和破解方法!
    发表于 04-20 22:23

    谁有野火ISO开发板光盘资料,百度网链接很多都失效了

    谁有野火ISO开发板光盘资料,百度网链接很多都失效了,谢谢
    发表于 06-29 08:29

    【NanoPi NEO试用体验】TCP通信之客户端程序

    写了一个TCP通信的客户端程序,匆忙之间写的,不够完善,可以围观,给出精辟的见解。百度科TCP/IP介绍:http://baike.baidu.com/link?url
    发表于 12-28 23:40

    跪求普中科技单片机HC6800V3.2光盘内容!,有的留个百度网,谢谢

    [tr=transparent]跪求普中科技单片机HC6800V2.2光盘内容!,有的留个百度网,谢谢[/tr][tr=transparent]跪求普中科技单片机HC6800V3.2光盘内容!,有的留个百度网
    发表于 05-28 22:27

    PCB封装库汇总分享 | 收集整理百度网链接

    `文章末尾百度网链接060308051206电解电容发光二极管3MM、5MM轻触开关电位器蜂鸣器TO-92(三极管、DS1B20等)LCD2864DIP40(51单片机带底座)TQFP44(贴片
    发表于 09-26 14:26

    请问百度网的链接失效该怎么办?

    在资料下载下的百度网链接失效了,各位同学,还有什么办法可以下载到?
    发表于 09-08 23:29

    极客日报第99期:百度网海外版上传下载不限速;一季度北京平均月薪达11187元;精选资料分享

    一分钟速览新闻点!闲鱼申请入驻微信小程序小鹏汽车正自研芯片,中美两地同步进行华为王成录:6 月前多款手机将升级鸿蒙 OS 年底覆盖 3 亿设备百度网海外版上传下载不限速,并改名为 TeraBox
    发表于 07-23 06:40