1***@qq.com
1***@qq.com
  • 发布:2022-09-24 14:34
  • 更新:2022-11-15 11:33
  • 阅读:1290

新出的uts写插件 getUniActivity().onActivityResult 这个怎么用

分类:uni-app

新出的uts写插件 getUniActivity().onActivityResult 这个怎么用

import { getUniActivity } from "io.dcloud.uts.android";  
import Intent from "android.content.Intent";  

export function selectFile(type: string = "text/*") {  
  const activity = getUniActivity();  
  const intent = new Intent(Intent.ACTION_GET_CONTENT);  
  intent.addCategory(Intent.CATEGORY_OPENABLE);  

  intent.setType(type);  

  activity.onActivityResult = (requestCode: number, resultCode: any, data: any) => {  
    console.log(requestCode)  
    if(100 === requestCode) {  
      console.log(data)  
    }  
  }  

  activity?.startActivityForResult(intent, 100);  
}

我这么写但是并不能拿到返回的数据
我又不懂原生的 看的一脸懵逼

2022-09-24 14:34 负责人:DCloud_Android_DQQ 分享
已邀请:

最佳回复

DCloud_Android_DQQ

DCloud_Android_DQQ

HBuilder X 3.6.9 版本已支持此函数。

Hello UTS 生命周期示例中增加了跳转系统拍照,返回获取图片的示例。其中有onActivitResult 使用示例。关键代码如下:

export function goOtherActivity(imageDone: (event:string) => void):boolean {  

    // 检查相关权限是否已经具备  
    if (ActivityCompat.checkSelfPermission(getUniActivity()!, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {  
        // 不具备权限,申请权限,并且告知用户监听失败  
        ActivityCompat.requestPermissions(getUniActivity()!, arrayOf(Manifest.permission.CAMERA), 1002)  

        return false;  
    }  

    onAppActivityResult((requestCode: Int, resultCode: Int, data?: Intent) => {  
        let eventName = "onAppActivityResult  -  requestCode:" + requestCode + " -resultCode:"+resultCode + " -data:"+JSON.stringify(data);  
        console.log(eventName);  
        if ((requestCode == 1001) && (resultCode == Activity.RESULT_OK)) {  
            if (data != null) {      
              let bundle = data.getExtras();   
              let mImageBitmap = bundle!.get("data") as Bitmap;  
              let bitmapPath = getUniActivity()!.getExternalCacheDir()!.getPath() + "/photo.png"  
              console.log(bitmapPath);  
              try{  
                  mImageBitmap.compress(Bitmap.CompressFormat.PNG,100,new FileOutputStream(bitmapPath))  
              }catch(e){  
              }  
              imageDone(bitmapPath);  

            }  
          }  
    });  

    let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
    //resolveActivity 返回可处理 Intent 的第一个 Activity 组件  
    if (takePictureIntent.resolveActivity(getUniActivity()!.getPackageManager()) != null) {  
        getUniActivity()!.startActivityForResult(takePictureIntent, 1001);  
    }  

    return true;  

}  

具体参考这里
https://gitcode.net/dcloud/hello-uts/-/blob/master/pages/lifecycle/lifecycle.vue

DCloud_Android_DQQ

DCloud_Android_DQQ

第一个 onActivitResult 目前版本不支持,稍后会支持。
第二个。 你这个引入的语法也是不对的。 建议参考 Hello UTS的示例插件

https://gitcode.net/dcloud/hello-uts

里面有详细的示例

  • chunge404

    希望uts完整出来后,能出个详细一点的教程,示例只是代码,没有详细说明这块代码有啥用,或者说一下原理,最好还是做一下注释,这样菜鸟学起来越快一些,不然看得一脸懵逼,不知道怎么下手。

    2022-11-14 22:03

  • chunge404

    虽然有文档,但是文档只说了流程,具体的代码没有说的,所以你们写代码的时候,应该写注释,分一二三步,然后分别是啥作用,也许就是几句话,就起了很关键的作用。

    2022-11-14 22:04

  • DCloud_Android_DQQ

    回复 chunge404: 已更新完整代码示例和项目地址

    2022-11-15 11:34

  • DCloud_Android_DQQ

    回复 chunge404: 欢迎加群: UTS 开发交流 527828934

    2022-11-15 11:36

1***@qq.com

1***@qq.com

getUniActivity()!.onActivityResult,貌似要加个 ! 号

该问题目前已经被锁定, 无法添加新回复