前提
plugins目录结构
标记数字1的:表示与原生交互的逻辑(获取原生功能的地方)
标记数字2的:原生数据获取,相当于原生数据暴露的一个接口,用于flutter端调用
example目录为测试的地方
权限申请
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类
开启位置监听 (间隔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 处理办法: