plugins package位置信息获取

578 阅读1分钟

前提

plugins目录结构

标记数字1的:表示与原生交互的逻辑(获取原生功能的地方)

标记数字2的:原生数据获取,相当于原生数据暴露的一个接口,用于flutter端调用

example目录为测试的地方

图片.png

权限申请

Android端申请权限

PackageManager.PERMISSION_GRANTED:有权限
PackageManager.PERMISSION_DENIED:无权限

权限判断: ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) 权限请求: //这里的mContext必须要为Activity类型 ActivityCompat.requestPermissions( mContext, new String[]{ Manifest.permission.ACCESS_FINE_LOCATION },code);

此时会遇到个问题:找不到activity类型的对象。 解决办法:需要在Plugin类中实现接口ActivityAware类,继而拿出activity类

图片.png

图片.png

开启位置监听 (间隔1s,间距5米监听一次) locationManager.requestLocationUpdates(PROVIDER, 1000, 5, listener, mContext.getMainLooper());

LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
        }
         @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
          @Override
        public void onProviderDisabled(String provider) {
        }
         };

数据拿出去时会遇到: type '_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map 处理办法:

图片.png