当前位置: 首页 > 科技观察

Tupan-鸿蒙版百度网盘客户端

时间:2023-03-12 17:33:41 科技观察

更多内容请访问:https://harmonyos.51cto.com与华为官方共同打造的鸿蒙技术社区由百度网盘开放提供的API开发的百度网盘客户端平台。主要提供网盘文件浏览、文件下载等功能(100M以下文件无限速,100M以上为祖传100k/s,支持会员加速)👉百度网盘开放平台应用主入口本应用主入口为MainAbility,应用打开时会判断用户是否有登录,如果没有登录,则重定向到登录页面,如果已经登录中,您将被重定向到主页。在登录界面,登录并通过webview请求百度的access_token访问流程文档。这里,需要注意一个细节。官方文档提供的授权地址为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();returnull;}}/***@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(){@OverridepublicbooleanisNeedLoadUrl(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(){@Overridepublicvoidrun(){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(){@Overridepublicvoidrun(){Preferencespreferences=newDataUtils().getPreferences(getApplicationContext());preferences.putString("token",accessToken.getAccess_token());首选项.flush();Intentintent1=newIntent();Operationoperation=newIntent.OperationBuilder().withBundleName(MyApp.bundleName).withAbilityName("cn.dsttl3.tupan.Ability.IndexAbility").build();intent1.setOperation(操作);startAbility(intent1);terminateAbility();//因为登录后不需要返回界面,所以通过terminateAbility()方法销毁界面}});}catch(IOExceptione){e.printStackTrace();}}})。start();returnfalse;}returnsuper.isNeedLoadUrl(webView,request);}});webView.load(newAppUtils().getLoginUrl());//这里是转换上面链接的方法当用户完成登录后,token会保存到本地。主页面使用ListContainer来显示文件列表。代码较多,本文不一一介绍。可以参考ListContainer的相关文档。下面介绍一下防滑操作。当应用只有一个界面时,不小心返回,应用直接退出,可以用这个方法做一个提醒。/***防止假退出操作*/booleanexit=true;@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventkeyEvent){if(exit){newToastDialog(getContext()).setText("返回再次退出程序").show();exit=false;newThread(newRunnable(){@Overridepublicvoidrun(){Time.sleep(3000);//三秒内返回再次退出程序exit=true;}}).start();returntrue;}else{returnfalse;}}下载页面提供本地下载和Aria2下载两种下载方式。分析处理的链接不能直接下载。User-Agent字段必须设置为pan.baidu.com才能正常下载。如何获取应用1、自己编译,附件中提供了源码需要修改的地方是包名config.json下的bundleName,以及cn.dsttl3下MyApp.java的bundleName.tupan目录。如果不修改,将无法在真机上运行,??页面跳转失败。在百度开放平台应用信息cn.dsttl3.tupan.utils目录下填写AppUtils.java/*百度应用信息*/StringYOUR_CLIENT_ID="";//填写自己的StringYOUR_REGISTERED_REDIRECT_URI="https://dsttl3.cn/baiduapi.html";//需要和我在百度网盘开放平台填写的一样,有一个地址就行,不需要在服务器上操作。当然也可以在服务端请求token后直接返回。StringYOUR_CLIENT_SECRET="";//填写自己的签名文件这个需要自己完成2.下载内测版不下载代码编译留言或者私信华为账号,我给你加测试。然后通过华为发的短信下载。文章相关附件可点击下方原文链接下载https://harmonyos.51cto.com/resource/1586更多信息请访问:Harmonyos.51cto,与华为官方共建的鸿蒙技术社区.com