您好,登錄后才能下訂單哦!
不同于移動(dòng)端原生開發(fā),當(dāng)開發(fā)者使用weex移動(dòng)開發(fā)時(shí),使用第三方SDK比較棘手。因?yàn)榈谌降腏S SDK是無法直接拿來使用的,環(huán)境不同。必須使用原生SDK,下面我介紹一下自己是如何在weex開發(fā)時(shí)(安卓)使用leancloud的服務(wù)的。
首先去leancloud的安卓SDK下載頁面,下載SDK,這里我只使用了最基礎(chǔ)的SDK包
<img src="/uploads/default/original/2X/5/582ffee695e0192ae085f0bc0e033543b316f673.png" width="452" height="221">
其實(shí)用Gradle也可以啊,我喜歡下載手動(dòng)集成。
然后在mainApplication.java文件中onCreat()方法里初始化
AVOSCloud.initialize(this,yourappid,yourappkey)
做過weex開發(fā)都知道,這個(gè)方法里面還會(huì)初始化WXSDKEngine和ImageAdapter,它們不沖突。
InitConfig config = new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build();
WXSDKEngine.initialize(this,config);
現(xiàn)在進(jìn)入正題了,如何在weex頁面實(shí)現(xiàn)上傳圖片呢?
Step.1 擴(kuò)展一個(gè)Module,調(diào)用手機(jī)系統(tǒng)的圖庫
@WXModuleAnno(runOnUIThread = true)
public void uploadp_w_picpath(){
int REQUESTCODE_PICK = 0;
Intent intent;
if(Build.VERSION.SDK_INT < 19){
Log.d("chenlei api level","Your api is lower than 19");
intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("p_w_picpath/*");
}else{
Log.d("chenlei api level","Your api is higher than 19");
intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
((Activity)mWXSDKInstance.getContext()).startActivityForResult(intent,REQUESTCODE_PICK);
}
Step.2 在負(fù)責(zé)渲染weex頁面的activity類里,重寫onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getApplicationContext(),"這個(gè)函數(shù)有效嗎?",Toast.LENGTH_SHORT);
super.onActivityResult(requestCode, resultCode, data);
String s = String.valueOf(resultCode);
if(resultCode == Activity.RESULT_OK && requestCode == REQUESTCODE_PICK){
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null, null, null,null);
if (cursor != null && cursor.moveToFirst()) {
Path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
Log.d("Path", Path);
}
try {
final AVFile file = AVFile.withAbsoluteLocalPath("test.png",Path);
file.saveInBackground(new SaveCallback() {
@Override
public void done(AVException e) {
Log.d(TAG, file.getUrl());
WXBridgeManager manager = WXBridgeManager.getInstance();
Map<String,String> urlData = new HashMap<String, String>();
urlData.put("url",file.getUrl());
urlData.put("showp_w_picpath","true");
urlData.put("uploadhint","改變圖片");
urlData.put("showdelete","true");
String jsonStr = JSON.toJSONString(urlData);
WXRefreshData refreshData = new WXRefreshData(jsonStr,false);
manager.refreshInstance(mInstance.getInstanceId(),refreshData);
}
}, new ProgressCallback() {
@Override
public void done(Integer integer) {
Toast.makeText(getApplicationContext(),"已經(jīng)上傳"+String.valueOf(integer)+"%",Toast.LENGTH_SHORT).show();
}
});
}catch(Exception e){
Toast.makeText(getApplicationContext(),"上傳圖片失敗",Toast.LENGTH_SHORT).show();
}
}else {
Toast.makeText(getApplicationContext(),"請(qǐng)選擇圖片",Toast.LENGTH_SHORT).show();
}
}
小提示:我們可以在AVFile的回調(diào)函數(shù)中創(chuàng)建WXBridgeManager獲取當(dāng)前實(shí)例,獲取文件上傳的進(jìn)度和最終URL,來更新頁面組件狀態(tài)和信息。
簡(jiǎn)單幾步,就實(shí)現(xiàn)了leancloud在weex開發(fā)中的使用,感謝leancloud提供的優(yōu)秀資源,你們是開發(fā)者的福音呀。
更多源碼可以去github上查看,歡迎拍磚和star。
<img src="/uploads/default/original/2X/1/1ab589f1125cb3893ff1d0dbe7c9cc5b8d2f77d7.png" width="466" height="500">
項(xiàng)目地址----------->[leancloud在weex開發(fā)中的使用項(xiàng)目實(shí)例][1]
[1]: https://github.com/iChenLei/weex-android-joke
有任何疑問可以聯(lián)系我的Email 2470828450@qq.com,交流weex和leancloud開發(fā)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。