自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

菟盤 - 鴻蒙版百度網(wǎng)盤客戶端

系統(tǒng)
菟盤,由百度網(wǎng)盤開放平臺提供的API開發(fā)的一個百度網(wǎng)盤客戶端。主要提供網(wǎng)盤文件瀏覽,文件下載等。(100M以下文件不限速,超過100M就是祖?zhèn)?00k/s了,支持會員加速)。

[[440624]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

介紹

什么是菟盤

菟盤,由百度網(wǎng)盤開放平臺提供的API開發(fā)的一個百度網(wǎng)盤客戶端。

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

👉百度網(wǎng)盤開放平臺

應(yīng)用主入口

本應(yīng)用主入口是MainAbility ,當(dāng)打開應(yīng)用時,會判斷用戶是否已登錄,未登錄會跳轉(zhuǎn)到登錄頁面,已登錄會跳轉(zhuǎn)到主頁。

登錄界面

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

#星光計劃2.0# 菟盤 - 鴻蒙版百度網(wǎng)盤客戶端-鴻蒙HarmonyOS技術(shù)社區(qū)

接入流程文檔

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

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

  1. /* 
  2.     百度應(yīng)用信息 
  3.      */ 
  4.     String YOUR_CLIENT_ID = ""; //填自己的 
  5.     String YOUR_REGISTERED_REDIRECT_URI = "https://dsttl3.cn/baiduapi.html"; //需要和自己在百度網(wǎng)盤開放平臺填寫的相同,有個地址就行,不需要在服務(wù)器操作。當(dāng)然也可以在服務(wù)器請求token后直接返回。 
  6.     String YOUR_CLIENT_SECRET = ""; //填自己的 
  7.  
  8.     /** 
  9.      * @return 移動端登錄授權(quán)鏈接 
  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&regtype=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授權(quán)鏈接 
  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內(nèi)的操作

  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()); // 這里是上面轉(zhuǎn)換鏈接的方法 

當(dāng)用戶完成登錄后,token就保存到本地了。

主頁面

使用ListContainer來顯示文件列表

#星光計劃2.0# 菟盤 - 鴻蒙版百度網(wǎng)盤客戶端-鴻蒙HarmonyOS技術(shù)社區(qū)

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

這里介紹一下防手滑操作

當(dāng)該應(yīng)用只有一個界面時,一不小心返回,導(dǎo)致應(yīng)用直接退出,可以使用這個方法進(jìn)行一個提醒。

  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);//三秒內(nèi)再次返回退出程序 
  14.                     exit=true
  15.                 } 
  16.             }).start(); 
  17.             return true
  18.         }else { 
  19.             return false
  20.         } 
  21.     } 

下載頁面

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

#星光計劃2.0# 菟盤 - 鴻蒙版百度網(wǎng)盤客戶端-鴻蒙HarmonyOS技術(shù)社區(qū)

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

怎么獲取該應(yīng)用

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

需要修改的地方

  •  包名

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

  • 填寫百度開放平臺應(yīng)用信息

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

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

  簽名文件

  • 這個需要自己操作

2、下載測試版

不需要自己下載代碼進(jìn)行編譯

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

文章相關(guān)附件可以點擊下面的原文鏈接前往下載

https://harmonyos.51cto.com/resource/1586

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-12-22 09:26:04

百度網(wǎng)盤青春版下載速度

2012-03-29 14:22:20

云存儲

2020-04-26 08:03:40

百度網(wǎng)盤流量

2022-08-26 05:39:00

監(jiān)控隱私

2020-02-07 11:10:07

開源技術(shù) 趨勢

2021-04-26 05:41:32

百度網(wǎng)盤秒傳

2016-10-26 19:02:53

2021-05-29 07:40:20

百度網(wǎng)盤存儲計算機技術(shù)

2018-09-30 10:58:20

云存儲原理網(wǎng)盤

2012-03-30 13:51:38

2011-10-28 16:19:21

百度搜索

2020-04-16 09:38:43

百度破解開發(fā)者

2021-03-11 10:20:47

百度網(wǎng)盤存儲計算機技術(shù)

2011-11-28 10:02:12

百度知道微問答移動
點贊
收藏

51CTO技術(shù)棧公眾號