solar walk 2电脑下载2 适配Android8.0

博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)您的位置: →
→ solar walk2内购破解版 v1.3.1.15 安卓已付费版
solar walk2内购破解版 v1.3.1.15 安卓已付费版solar walk2安卓破解版下载|
网友评分:8
软件大小:23M
软件语言:中文
软件类型:国产软件
软件类别:免费软件 / 常用工具
更新时间:
软件等级:
官方网站:暂无
运行环境:Android
软件厂商:
顶好评:50%
同类相关软件
23M/中文/10.023.0M/中文/.02.0M/中文/10.02.5M/中文/10.0300KB/中文/10.0
solar walk2内购破解版是一款星系软件破解版,大神修改而成,破解付费限制,完全解锁全部星系,在solar walk2可以找到更多关于我们的邻近行星!十分好用!喜欢就来下载体验呗!软件介绍:Solar Walk功能强大,制作精良,打开应用后,你就能够体会到本作与其他观星应用在品质上的不同。玩家在App里可以自由查看“星系视图”,”卫星图”,还可以按照不同的地理位置查看可以观察到的太阳系行星方位。323MB的容量一点不含糊,全3D的星球与卫星(包括人造卫星)模型都十分逼真。不过相比Star Walk,Solar Walk更像是一个互动性的太阳系知识科普应用,适合对天文感兴趣的小朋友与大朋友!软件功能:1、能够由各天文应用程序脱颖而出, 全赖太阳系漫游有一个非常美丽和平稳的图形和动画。地球和其他行星看起来是非常真实的, 你甚至可以看到云连同山脉, 湖泊,海洋。2、让我们在宇宙中找到更多关于我们的邻近行星,透过确定的速度,回转周期,时间,享受穿梭其间。选择一特别星球成为宇宙的中心,就能看到土星,木星,火星和天王星的卫星。在三维模型中的太阳系漫游应用 程式是 完全 与真实 太阳系相同的。3、经常利用太阳系漫游能透过互动学习进而更接近宇宙!4、还可以下载功能包,包括行星高清表面,航天飞船出舱等。软件特色:三维的太阳系漫游系统:只需要移动太阳系统就能游玩太阳系的三维模型。您可放大,缩小,从不同的角度探讨它。你不仅可以看到我们太阳系的各行星实际的位置,而且还知道无论过去还是将来,在一定的时间区间内他们的位置!让我们此使用时间机器(Time Machine )功能。飞往星球( FLY to the PLANET):从远方选择一个星球,点击“火箭”图像直接飞往该行星。您会享受一个美丽而逼真行星的图像!阅读信息 (READ INFO)(关于这个星球):通过点击“我“您将了解有关行星一般的信息,它的名字,它的质量,半径,与太阳距星系视图- 整个星系-选项的迷人画面卫星-数颗最引人注目的人造地球卫星的实时运行轨迹地点 -箭头在地球仪上指向你现在所处的地点、世界各大都市的名字,以及月球、火星、金星的画面。电影- 动画教育类视频荟萃破解说明:此版本由syons大神破解完整功能,强大的神器,强烈推荐给天文爱好者必备/
软件数据包存放位置:\Android\obb数据包解压密码是:微笑的看他
其他版本下载
solar walk2内购破解版 v1.3.1.15 安卓已付费版
软件无法下载或下载后无法使用,请点击报错,谢谢!
请描述您所遇到的错误,我们将尽快予以修正,谢谢!
*必填项,请输入内容
本类下载排行
3.61 7.02 10.03 7.54 5.85 1.26 1.17 6.28 1.39 10.010 10.011 .812 6.013 10.014 4.015
本类精品软件
6.2M/中文/10.010.5M/中文/6.614.8M/中文/10.018.7M/中文/10.035.7M/中文/10.021.0M/中文/10.019.7M/中文/10.0
装机必备软件
本类集合软件5600人阅读
【Android 应用开发】(83)
由于 Android 7.0 或更高版本的系统在国内手机市场上的占比不是很高,很多 Android 开发人员并没有做 7.0 适配工作,同时测试人员也容易忽视这方面的兼容问题。这导致 7.0 及以上版本的手机用户在使用到应用部分功能时可能出现 App 崩溃闪退。其中,大部分原因都是由项目中使用到 file:// 类型的 URI 所引发的。本文我们便来一探究竟。
Android 7.0 权限变更
为了提高私有目录的安全性,防止应用信息的泄漏,从 Android 7.0 开始,应用私有目录的访问权限被做限制。具体表现为,开发人员不能够再简单地通过 file:// URI 访问其他应用的私有目录文件或者让其他应用访问自己的私有目录文件。
备注:如果你对应用私有目录不太清楚的话,可以阅读我的这篇文章:。
同时,也是从 7.0 开始,Android SDK 中的
策略禁止开发人员在应用外部公开 file:// URI。具体表现为,当我们在应用中使用包含 file:// URI 的 Intent 离开自己的应用时,程序会发生故障。
开发中,如果我们在使用 file:// URI 时忽视了这两条规定,将导致用户在 7.0 及更高版本系统的设备中使用到相关功能时,出现 FileUriExposedException 异常,导致应用出现崩溃闪退问题。而这两个过程的替代解决方案便是使用 FileProvider。
FileProvider
作为四大组件之一的 ContentProvider,一直扮演着应用间共享资源的角色。这里我们要使用到的 FileProvider,就是 ContentProvider 的一个特殊子类,帮助我们将访问受限的 file:// URI 转化为可以授权共享的 content:// URI。
第一步,注册一个 FileProvider
作为系统四大组件之一的 ContentProvider,其子类FileProvider,也同样需要使用
元素在 Manifest 文件中添加注册信息,并按照要求设置相关属性值。
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.yourname"
android:exported="false"
android:grantUriPermissions="true"&
其中,android:authorities 属性值是一个由 build.gradle 文件中的 applicationId 值和自定义的名称组成的 Uri 字符串(这样写是约定俗成的)。其他属性值使用如上固定值即可。
第二步,添加共享目录
在 res/xml 目录下新建一个 xml 文件,用于存放应用需要共享的目录文件。这个 xml 文件的内容类似这样:
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"&
name="my_images" path="images/"/&
元素必须包含一到多个子元素。这些子元素用于指定共享文件的目录路径,必须是这些元素之一:
&files-path&:内部存储空间应用私有目录下的 files/ 目录,等同于 Context.getFilesDir() 所获取的目录路径;
&cache-path&:内部存储空间应用私有目录下的 cache/ 目录,等同于 Context.getCacheDir() 所获取的目录路径;
&external-path&:外部存储空间根目录,等同于 Environment.getExternalStorageDirectory()
所获取的目录路径;
&external-files-path&:外部存储空间应用私有目录下的 files/ 目录,等同于 Context.getExternalFilesDir(null) 所获取的目录路径;
&external-cache-path&:外部存储空间应用私有目录下的 cache/ 目录,等同于 Context.getExternalCacheDir();
可以看出,这五种子元素基本涵盖内外存储空间所有目录路径,包含应用私有目录。同时,每个子元素都拥有 name 和 path 两个属性。
其中,path 属性用于指定当前子元素所代表目录下需要共享的子目录名称。注意:path 属性值不能使用具体的独立文件名,只能是目录名。
而 name 属性用于给 path 属性所指定的子目录名称取一个别名。后续生成 content:// URI 时,会使用这个别名代替真实目录名。这样做的目的,很显然是为了提高安全性。
如果我们需要分享的文件位于同级别目录下不同的子目录中,就需要添加多个子元素逐一指定要分享的文件目录,或者共享他们通用的父目录也行。
添加完共享目录后,再在 &provider& 元素中使用 &meta-data& 元素将 res/xml 中的 path 文件与注册的 FileProvider 链接起来:
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.yourname"
android:exported="false"
android:grantUriPermissions="true"&
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/yourfilename" /&
第三步,生成 Content URI
在 Android 7.0 出现之前,我们通常使用 Uri.fromFile() 方法生成一个 File URI。这里,我们需要使用 FileProvider 类提供的公有静态方法 getUriForFile 生成 Content URI。比如:
Uri contentUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID + ".myprovider", myFile);
需要传递三个参数。第二个参数便是 Manifest 文件中注册 FileProvider 时设置的 authorities 属性值,第三个参数为要共享的文件,并且这个文件一定位于第二步我们在 path 文件中添加的子目录里面。
举个例子:
String filePath = Environment.getExternalStorageDirectory() + "/images/"+System.currentTimeMillis()+".jpg";
File outputFile = new File(filePath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdir();
Uri contentUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID + ".myprovider", outputFile);
生成的 Content URI 是这样的:
content://com.yifeng.samples.myprovider/my_images/9.jpg
其中,构成 URI 的 host 部分为 &provider& 元素的 authorities 属性值(applicationId + customname),path 片段 my_images 为 res/xml 文件中指定的子目录别名(真实目录名为:images)。
第四步,授予 Content URI 访问权限
生成 Content URI 对象后,需要对其授权访问权限。授权方式有两种:
第一种方式,使用 Context 提供的 grantUriPermission(package, Uri, mode_flags) 方法向其他应用授权访问 URI 对象。三个参数分别表示授权访问 URI 对象的其他应用包名,授权访问的 Uri 对象,和授权类型。其中,授权类型为 Intent 类提供的读写类型常量:
FLAG_GRANT_READ_URI_PERMISSION
FLAG_GRANT_WRITE_URI_PERMISSION
或者二者同时授权。这种形式的授权方式,权限有效期截止至发生设备重启或者手动调用 revokeUriPermission() 方法撤销授权时。
第二种方式,配合 Intent 使用。通过 setData() 方法向 intent 对象添加 Content URI。然后使用 setFlags() 或者 addFlags() 方法设置读写权限,可选常量值同上。这种形式的授权方式,权限有效期截止至其它应用所处的堆栈销毁,并且一旦授权给某一个组件后,该应用的其它组件拥有相同的访问权限。
第五步,提供 Content URI 给其它应用
拥有授予权限的 Content URI 后,便可以通过 startActivity() 或者 setResult() 方法启动其他应用并传递授权过的 Content URI 数据。当然,也有其他方式提供服务。
如果你需要一次性传递多个 URI 对象,可以使用 intent 对象提供的 setClipData() 方法,并且 setFlags() 方法设置的权限适用于所有 Content URIs。
常见使用场景
前面介绍的内容都是理论部分,在
都有所介绍。接下来我们看看,实际开发一款应用的过程中,会经常遇见哪些 FileProvider 的使用场景。
自动安装文件
版本更新完成时打开新版本 apk 文件实现自动安装的功能,应该是最常见的使用场景,也是每个应用必备功能之一。常见操作为,通知栏显示下载新版本完毕,用户点击或者监听下载过程自动打开新版本 apk 文件。适配 Android 7.0 版本之前,我们代码可能是这样:
File apkFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "app_sample.apk");
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
installIntent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
startActivity(installIntent);
现在为了适配 7.0 及以上版本的系统,必须使用 Content URI 代替 File URI。
在 res/xml 目录下新建一个 file_provider_paths.xml 文件(文件名自由定义),并添加子目录路径信息:
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"&
name="my_download" path="Download"/&
然后在 Manifest 文件中注册 FileProvider 对象,并链接上面的 path 路径文件:
android:name="android.support.v4.content.FileProvider"
android:authorities="com.yifeng.samples.myprovider"
android:exported="false"
android:grantUriPermissions="true"&
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths"/&
修改 java 代码,根据 File 对象生成 Content URI 对象,并授权访问:
File apkFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "app_sample.apk");
Uri apkUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID+".myprovider", apkFile);
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
installIntent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(installIntent);
如此这般,便完成了应用中调用系统功能打开 apk 文件的 7.0 适配工作。
调用系统拍照
调用系统拍照功能时也需要传递一个 Uri 对象,用于保存图片至指定目录,这里也需要适配 7.0 版本。其他步骤不再赘述,核心 java 代码如下(路径不同,注意添加 res/xml 中的 path 文件子目录):
String filePath = Environment.getExternalStorageDirectory() + "/images/"+System.currentTimeMillis()+".jpg";
File outputFile = new File(filePath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdir();
Uri contentUri = FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID + ".myprovider", outputFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);
startActivityForResult(intent, REQUEST_TAKE_PICTURE);
调用系统裁剪
调用系统裁剪的过程中涉及到两个 Uri 对象:inputUri 和 outputUri,较为复杂一些。通常,调用系统裁剪的来源为调用系统拍照或选择系统相册。前者返回的是一个 File URI 对象,后者返回的是一个 Content URI 对象。作为裁剪源,我们要做的就是对其做进一步处理。但是不能像上面那样使用 getUriForFile() 方法,这个并不难理解,因为如果是选择系统相册所得的图片,本身也不一定属于我们自己的应用。正确处理方式是这样:
private Uri getImageContentUri(String path){
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Images.Media._ID},
MediaStore.Images.Media.DATA + "=? ",
new String[]{path}, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID));
Uri baseUri = Uri.parse("content://media/external/images/media");
return Uri.withAppendedPath(baseUri, ""+id);
ContentValues contentValues = new ContentValues(1);
contentValues.put(MediaStore.Images.Media.DATA, path);
return getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
拿到正确的 Content URI 后,作为 inputUri,传递给 Intent 对象:
Intent intent = new Intent("com.android.camera.action.CROP");
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(inputUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outputFile));
startActivityForResult(intent, REQUEST_PICK);
注意:这里的 outputUri 并没有改变,仍然使用的是 Uri.fromFile() 方法获取的 File URI 类型!这是很奇怪的一点,但是不得不这么做。事实上,使用这种方式调用系统裁剪功能本身就是有问题的!常见问题如:在部分机型上,调用系统裁剪并返回前一个页面时,在 onActivityResult() 方法中得到的 resultCode 值不等于 RESULT_OK。Crop Intent 在官方文档中本来就无迹可寻,本身就是一种不推荐的用法!取而代之的是,我们可以使用 GitHub 上的一些开源库实现应用内的图片裁剪功能,比如 、 等。
历史版本问题
说了这么多,还有一个大家比较关心的问题就是:哪些已经上线的旧版本应用没有做 7.0 适配工作怎么办?关于这个问题,Google 已经提前帮我们想好解决方案啦。
还记得 6.0 运行时权限问题吗?如果你不想处理运行时权限事宜的话,只需要在 build.gradle 文件中将 targetSdkVersion 的值设为 23 以下即可。
同样的,只要 targetSdkVersion 值小于 24,File URI 的使用依旧可以出现在 7.0 及以上版本的设备中。不过需要注意的是,如前面所述,调用系统裁剪功能比较特殊,可能会出现一些问题。
虽然 Google 在每次发布新版 Android 系统时,都提供这种设置 targetSdkVersion 的方式兼容旧版本,但只是一种临时解决方案,并不推荐大家使用这种技巧绕开新版本的适配问题。要知道,新出现的 API 改变一定是在解决过去存在的系统问题,是一种进步的表现。遵循规范,是我们每个开发人员开发时都应铭记于心的格言。
关于我:亦枫,博客地址:,新浪微博:
微信扫描二维码,欢迎关注我的个人公众号:安卓笔记侠
不仅分享我的原创技术文章,还有程序员的职场遐想solar walk2内购破解版下载|solar walk2内购破解版下载v1.4.25最新官方版_西西软件下载
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
相关软件 /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
7.6M/中文/7.1
79.6M/中文/7.0
41.9M/中文/7.6
16.5M/中文/7.5
23.9M/中文/6.0
41.6M/中文/8.7
19M/中文/5.0
solar walk2内购破解版是一款非常有趣的相关教育性天文软件,通过这款软件用户可以方便的了解相关行星运行轨迹,整个流程全都可以在安卓手机设备上运行,西西这里提供了相关软件的免费版,感兴趣的小伙伴们不要错过了哦。solar walk2内购破解版相关介绍:全新Solar Walk 2是一款应用先进图像技术的教育性工具,功能强大。Solar Walk 2以全新方式提供太阳系的互动型百科全书。基于真实物理特性和最新摄影数据,Solar Walk 2采用行星大气、太阳耀斑、极光和小行星带的炫美视觉效果打造空间深度,更显活泼生动,在手机设备上达到这种效果让人觉得难以置信。SOLAR WALK 2的新颖点日历太阳系的生活以一系列事件呈现出来:天文现象(日食、天体合等)和人为任务。用户可通过视觉体验了解空间探索的进展,看到当时的星体如何运行以及新近将如何运行。任务你将看到人造卫星飞过地球以及火星探测车在红色星体上移动。每个任务的每个著名事件都在日历中待你探索。物理&星体运行栩栩如生。你可以从太空看到日食--一个阴影穿过地球,准确地看到每次覆盖范围的食现象在何时覆盖哪些地区。纹理在冥王星执行最新任务期间获得的照片已在应用中,使其成为最新空间模拟器数据2597颗恒星、21颗小行星以及8颗行星在任何已知日期和时间的正确相对位置&与Solar Walk 1有何不同?Solar Walk 2拥有全新的图像、界面和更新的行星纹理。精选日历、天文事件模拟集锦外观炫美,可引导用户在Solar Walk 2中探索太阳系。你还可以象在Solar Walk 1中一样绕太阳系飞行,独自探索,但现在你有一个全方位导游任你差遣。相关功能:高级访问可解锁:- 可升级的卫星、矮星、小行星、彗星3D模型和任务(附有详细信息),包括日历事件和选定图库- 时间机器――探索任何过去或未来已知日期天体的精确位置- 过去和未来所有重要天文事件高级访问授权- 应用支持- 月历更新- 每月新天体- 实时增加新太空探索任务
安卓官方手机版
IOS官方手机版
solar walk2内购破解版 最新官方版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。}

我要回帖

更多关于 solar walk 2电脑下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信