Unity与安卓交互(打开安卓手机相册为例)

创建两个类

更新: 看了下方你能学到基础的安卓API自己关于安卓方面也不会再感到迷茫,我会仔细解释相关API,我们以上方的例子为基础加以修改

  1. 第一步:在上方工程中重新建一个Mold并选择AndroidLibrary(记住打出的Arr包即插件名称将默认为该名称)
    在这里插入图片描述
    在这里插入图片描述
    这是我新建的AndroidLibrary
  2. 直接将上方这两java文件以及Unity的lib‘文件复制到对应目录.提示可以直接 :“Ctrl + c 和Ctrl + v ”
    在这里插入图片描述
    在这里插入图片描述
  3. 对CallAndroid类进行修改去掉多余的行为

import android.app.Activity;
import android.content.Intent;

import com.unity3d.player.UnityPlayer;

public class CallAndroid {
   

    //Unity中会调用这个方法,用于打开本地相册
    //str 为unity传过来的路径
    public void TakePhoto(String str)//我们不需要unity传它的上下文 可以直接通过UnityPlayer.currentActivity获取Unity的界面(Activity)
    {
   
        System.out.println("路径:"+str);
        Intent intent = new Intent(UnityPlayer.currentActivity,WebViewActivity.class);//WebViewActivity为需要跳转的界面(Activity) //记得回来修改这里WebViewActivity改为权限的Activity我这里是TestActivity
        intent.putExtra("path", str);//传给跳转的Activity 参数一是键 参数二是值
        UnityPlayer.currentActivity.startActivity(intent);//跳转到另一个界面(Activity)
    }
}

  1. 动态权限部分:安卓6.0后有了动态权限(即需要向用户申请权限)而且 我们不希望游戏一打开就提示用户给予权限
    所有我们现在的需求就是在调用时先判断用户是否给予了对应权限 大家可以自己网上找一些写的好的我这里给大家提供一个博主写的,感觉很不错 “我找不到那篇博客了如果找到了会贴上地址的” 在这里插入图片描述
package com.jing.pickpicture.permission;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;


/**
 * @author Admin
 * @version $Rev$
 * @des ${TODO}
 * @updateAuthor $Author$
 * @updateDes ${TODO}
 */
public class BasePermission extends Activity {
   
    //**************** Android M Permission (Android 6.0权限控制代码封装)
    private int permissionRequestCode = 88;
    private PermissionCallback permissionRunnable;

    public interface PermissionCallback {
   
        void hasPermission();

        void noPermission();
    }

    /**
     * Android M运行时权限请求封装
     *
     * @param permissionDes 权限描述
     * @param runnable      请求权限回调
     * @param permissions   请求的权限(数组类型),直接从Manifest中读取相应的值,比如Manifest.permission.WRITE_CONTACTS
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public void performCodeWithPermission(@NonNull String permissionDes, PermissionCallback runnable, @NonNull String... permissions) {
   //子类调用
        if (permissions == null || permissions.length == 0)
            return;
        //        this.permissionrequestCode = requestCode;
        this.permissionRunnable = runnable;
        if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.M) || checkPermissionGranted(permissions)) {
   //安卓api小于26或者已经授权 直接调用子类传来的PermissionCallback接口hasPermission函数
            if (permissionRunnable != null) {
   
                permissionRunnable.hasPermission();
                permissionRunnable = null;
            }
        } else {
   //
            //permission has not been granted.
            requestPermission(permissionDes, permissionRequestCode, permissions);//申请权限
        }

    }
    @RequiresApi(api = Build.VERSION_CODES.M)
    private boolean checkPermissionGranted(String[
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值