激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - 菟盤 - 鴻蒙版百度網盤客戶端

菟盤 - 鴻蒙版百度網盤客戶端

2021-12-16 22:27鴻蒙社區dsttl3點cn 編程技術

菟盤,由百度網盤開放平臺提供的API開發的一個百度網盤客戶端。主要提供網盤文件瀏覽,文件下載等。(100M以下文件不限速,超過100M就是祖傳100k/s了,支持會員加速)。

菟盤 - 鴻蒙版百度網盤客戶端

介紹

什么是菟盤

菟盤,由百度網盤開放平臺提供的API開發的一個百度網盤客戶端。

主要提供網盤文件瀏覽,文件下載等。(100M以下文件不限速,超過100M就是祖傳100k/s了,支持會員加速)

百度網盤開放平臺

應用主入口

本應用主入口是MainAbility ,當打開應用時,會判斷用戶是否已登錄,未登錄會跳轉到登錄頁面,已登錄會跳轉到主頁。

登錄界面

登錄通過webview來請求百度的access_token

菟盤 - 鴻蒙版百度網盤客戶端

接入流程文檔

這里需要注意一個細節,官方文檔提供的授權地址是PC版的,需要改造一下,來適配手機頁面。

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

  1. /*
  2. 百度應用信息
  3. */
  4. String YOUR_CLIENT_ID = ""; //填自己的
  5. String YOUR_REGISTERED_REDIRECT_URI = "https://dsttl3.cn/baiduapi.html"; //需要和自己在百度網盤開放平臺填寫的相同,有個地址就行,不需要在服務器操作。當然也可以在服務器請求token后直接返回。
  6. String YOUR_CLIENT_SECRET = ""; //填自己的
  7.  
  8. /**
  9. * @return 移動端登錄授權鏈接
  10. */
  11.  
  12. public String getLoginUrl(){
  13.  
  14. String url = "https://openapi.baidu.com/oauth/2.0/authorize?response_type=code" +
  15. "&client_id=" +YOUR_CLIENT_ID +
  16. "&redirect_uri=" + YOUR_REGISTERED_REDIRECT_URI +
  17. "&scope=basic,netdisk&force_login=0";
  18. try {
  19. url = URLEncoder.encode(url,"UTF-8");
  20. url = "https://wappass.baidu.com/passport/?login&tpl=wimn&sms=1®type=1&u=" +
  21. url +
  22. "&extrajson=%7b%22src%22%3a%22se_000000%22%7d#/password_login";
  23. return url;
  24. } catch (UnsupportedEncodingException e) {
  25. e.printStackTrace();
  26. return null;
  27. }
  28. }
  29.  
  30. /**
  31. * @return Access_token授權鏈接
  32. */
  33.  
  34. public String getAccessTokenUrl(String CODE){
  35. return "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code" +
  36. "&code=" + CODE +
  37. "&client_id=" + YOUR_CLIENT_ID +
  38. "&client_secret=" + YOUR_CLIENT_SECRET +
  39. "&redirect_uri=" + YOUR_REGISTERED_REDIRECT_URI;
  40. }

webview內的操作

  1. WebView webView = (WebView) findComponentById(ResourceTable.Id_login_wv);
  2. webView.getWebConfig().setJavaScriptPermit(true);
  3. webView.setWebAgent(new WebAgent(){
  4. @Override
  5. public boolean isNeedLoadUrl(WebView webView, ResourceRequest request) {
  6. if (request.getRequestUrl().toString().startsWith("https://dsttl3.cn")){ // 這個鏈接是你所填寫的 YOUR_REGISTERED_REDIRECT_URI 這里只寫了開頭,效果相同
  7. String code = request.getRequestUrl().toString().split("code=")[1];
  8. String Access_token_url = new AppUtils().getAccessTokenUrl(code);
  9. new Thread(new Runnable() {
  10. @Override
  11. public void run() {
  12. try {
  13. OkHttpClient client = new OkHttpClient();
  14. Request request = new Request.Builder().url(Access_token_url)
  15. .header("User-Agent","pan.baidu.com")
  16. .build();
  17. Call call = client.newCall(request);
  18. String accessTokenJson = call.execute().body().string();
  19. AccessToken accessToken = new Gson().fromJson(accessTokenJson, AccessToken.class);
  20. System.out.println(accessToken.getAccess_token());
  21. getUITaskDispatcher().asyncDispatch(new Runnable() {
  22. @Override
  23. public void run() {
  24. Preferences preferences = new DataUtils().getPreferences(getApplicationContext());
  25. preferences.putString("token",accessToken.getAccess_token());
  26. preferences.flush();
  27. Intent intent1 = new Intent();
  28. Operation operation = new Intent.OperationBuilder()
  29. .withBundleName(MyApp.bundleName)
  30. .withAbilityName("cn.dsttl3.tupan.Ability.IndexAbility")
  31. .build();
  32. intent1.setOperation(operation);
  33. startAbility(intent1);
  34. terminateAbility(); //因為登錄完成后無需返回改界面,通過 terminateAbility() 方法銷毀該界面
  35. }
  36. });
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }).start();
  42. return false;
  43. }
  44. return super.isNeedLoadUrl(webView, request);
  45. }
  46. });
  47. webView.load(new AppUtils().getLoginUrl()); // 這里是上面轉換鏈接的方法

當用戶完成登錄后,token就保存到本地了。

主頁面

使用ListContainer來顯示文件列表

菟盤 - 鴻蒙版百度網盤客戶端

代碼有點多,不在本文介紹了,可以參考ListContainer的相關文檔

這里介紹一下防手滑操作

當該應用只有一個界面時,一不小心返回,導致應用直接退出,可以使用這個方法進行一個提醒。

  1. /**
  2. * 防止誤退出操作
  3. */
  4. boolean exit = true;
  5. @Override
  6. public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
  7. if (exit){
  8. new ToastDialog(getContext()).setText("再次返回退出程序").show();
  9. exit = false;
  10. new Thread(new Runnable() {
  11. @Override
  12. public void run() {
  13. Time.sleep(3000);//三秒內再次返回退出程序
  14. exit=true;
  15. }
  16. }).start();
  17. return true;
  18. }else {
  19. return false;
  20. }
  21. }

下載頁面

提供兩種下載方式,本地下載和Aria2下載

菟盤 - 鴻蒙版百度網盤客戶端

解析處理的鏈接不能直接下載,必需要設置User-Agent字段為pan.baidu.com才能正常下載

怎么獲取該應用

1、自己編譯,本文附件提供源碼

需要修改的地方

  • 包名

config.json 下的bundleName,和cn.dsttl3.tupan目錄下MyApp.java的bundleName。不修改導致無法真機運行和頁面跳轉失敗

  • 填寫百度開放平臺應用信息

cn.dsttl3.tupan.utils 目錄下的 AppUtils.java

  1. /*
  2. 百度應用信息
  3. */
  4. String YOUR_CLIENT_ID = ""; //填自己的
  5. String YOUR_REGISTERED_REDIRECT_URI = "https://dsttl3.cn/baiduapi.html"; //需要和自己在百度網盤開放平臺填寫的相同,有個地址就行,不需要在服務器操作。當然也可以在服務器請求token后直接返回。
  6. String YOUR_CLIENT_SECRET = ""; //填自己的

簽名文件

  • 這個需要自己操作

2、下載測試版

不需要自己下載代碼進行編譯

留言或私信華為賬號,我會給你添加測試。然后通過華為官方發送的短信進行下載。

原文鏈接:https://harmonyos.51cto.com

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青久草视频 | 91精品国产综合久久婷婷香 | 欧美高清第一页 | 高清在线观看av | 国产美女三级做爰 | 亚洲精品tv久久久久久久久久 | 黄色小视频在线免费看 | 精品亚洲午夜久久久久91 | av电影免费播放 | 综合97| 欧美在线 | 亚洲 | 视频一区二区三区在线播放 | 精品一区二区在线视频 | 日韩视频一区二区在线观看 | 欧美一级不卡视频 | 欧美黄色一级带 | 毛片免费网 | 成年人黄色免费电影 | 黄色片视频在线观看 | 黄色成人在线播放 | 国产91大片 | 91在线视频精品 | 99爱视频 | 精品国产一区二区三区蜜殿 | 黄色成人在线播放 | 黄色av网站免费看 | 国产成人高潮免费观看精品 | 色婷婷av一区二区三区久久 | 免费一级特黄做受大片 | 羞羞的 | av免费在线播放网址 | 91久久久久久久久久久久久 | 懂色粉嫩av久婷啪 | 成人午夜免费福利 | 在线中文字幕观看 | 精品久久999 | 超碰97国产在线 | 久久精品视频一区二区三区 | 99久久久国产精品露出 | 欧美精品一区二区久久 | 中文字幕网址 |