首先,你应当确保tpk数据读取正确。读取方式常用的很多,我写一种,这个不是我要说的重点。
String path="/mnt/sdcard/目录/数据.tpk"
其次,确保目录正确的情况下,依然报错。这是主要说的问题。与AndroidStudio的编译的SDK版本有关系。在android SDK 23以上,对于类似于存取权限的危险权限申请方式有所改动。SDK 23以前,只需要在Manifest.XML文件中增加权限即可,在SDK 23以后,不仅要在上面文件中添加相应的权限,还需要在JAVA代码中申请权限。
JAVA代码如下:
public class MainActivity extends AppCompatActivity {
private MapView mapView;
private ArcGISLocalTiledLayer arcGISLocalTiledLayer;
//在API23+以上,不仅要在AndroidManifest.xml里面添加权限 还要在JAVA代码中请求权限:
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView=(MapView) findViewById(R.id.mMapView);
int permission = ActivityCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
arcGISLocalTiledLayer = new ArcGISLocalTiledLayer("/mnt/sdcard/hz.tpk");
mapView.addLayer(arcGISLocalTiledLayer);
}
}