Ⅰ android 读写文件需要哪些权限
<!--往sdcard中写入数据的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中创建/删除文件的权限 --><uses-permission android:name="android.permission.MOUNT_U
android中的apk必须签名
这种签名不是基于权版威证书权的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限。基于UserID的进程级别的安全机。这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。重要的是,android系统有的权限是基于签名的。
Ⅱ android 文件读写权限是什么
<!--往sdcard中写入数据的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--在sdcard中创建版权/删除文件的权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
Ⅲ Android 6.0 读写SD卡权限问题
Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中
【预置条件】插入T卡【操作步骤】设置>存储设备和USB>选择SD卡为默认存储>收音机录音【实际结果】收音机的录音文件未保存到T卡【预期结果】收音机的录音文件保存到T卡【复现概率】10/10
此外,SoundRecorder默认存储SD卡,生成的文件却可以保存到SD卡中
1、收音机文件没有保存到指定的SD卡目录下,因此可能是文件的路径不对。
2、进入设置中,切换默认存储位置,内部存储或者SD卡,每次切换都会修改系统中某一属性值。
3、当收音机文件保存的时候,必须要读取当前系统的默认存储路径,然后生成自己的文件路径。
STEP1、初步解决方案,但没有生效,引入新问题
对比 SoundRecorder ,根据GIT库中,之前的同事的修改记录,找到可能的解决方案,修改如下:
引入新的问题,此时,点击 Start Recording 会提示内部错误。
分析Log发现,由于权限拒绝,抛出IO异常
01-01 07:35:38.167 7467 7467 W System.err: java.io .IOException: open failed: EACCES (Permission denied)
STEP2、Android M 下SD卡读写权限问题
分析由于权限问题后,结合Android M new design,开始查找文档,寻找解决Android M 下SD卡读写权限问题
Android6.0中的运行时请求权限
后来,试了好几种方法,但都没有用,以及报问题“EACCES (Permission denied)”
STEP3、再分析可能是运行时权限问题
判断APP运行时权限如下:
发现此时,FMRadio对于的组权限如下:
com.android.fmradio Groups: 1013 3002 3003 9997 50010
com.android.soundrecorder Groups: 1015 1023 3003 9997 50105
根据 系统权限 的定义,有兴趣的同学可以去看一下这个文件 system/core/include/private/android_filesystem_config.h
分析这些Gid发现:
1015 为sdcard_rw,1023 为media_rw权限
因此,得出结论如下
1、首先修改AndroidManifest.xml文件,新增权限,确保FMRadio应用级的权限;
2、原生FMRadio使用过程中,会进行运行时的权限检查,故FMRadio运行时应该拿到了WRITE_EXTERNAL_STORAGE,以及READ_EXTERNAL_STORAGE权限,
3、但是由于FMRadio本身不具备“1015,1023”组权限,这些权限无效,仍然无法对SD卡进行读写操作。
STEP4、最终解决方案
在 STEP1 的修改基础上,在框架层,权限对应组中给予FMRadio相应的组权限,新增修改如下:
frameworks/base/data/etc/platform.xml
重编framework.jar, 将修改后的jar文件push到手机,重启
此时,再检查FMRadio对于的组权限如下:
com.android.fmradio Groups: 1013** 1015 1023** 3002 3003 9997 50010
到此为止,
Ⅳ Android应用程序怎样获取读取系统文件的权限
1、必须是Android系统开发人员,否则你无法修改init.rc等文件。 2、你的应用程序必须要获得system权限。
在应用层 你要想用代码获得系统文件权限,除非你手机root了
要么你自己坐rom。。。。 自己修改 init,rc
具体可以参考这篇博文::blog.sina../s/blog_5f35912f0100w4ld.
可以参考如下内容:
按照 Simon 的文章中提到的,应用程序有以下两种办法临时获得 root 权限:
1) 实现一个 init 实现一个 Service ,来帮助 Android 应用程序执行 root 权限的命令。
2) 实现一个虚拟设备,这个设备帮助 Android 应用程序执行 root 权限的命令。
第二种办法我这里没有尝试,暂时也不会。这里讲讲我在实现第一种办法的过程和遇到的一些问题。
1. 将我们要执行的命令写成脚本,或者可执行程序。
下面是我的脚本 ifconfig_test.sh :
# ! /system/bin/sh
ifconfig
注意: 脚本的第一行必须为 # ! /system/bin/sh ,否则无法执行,通过 dmesg 可以查看到信息内容为cannot execve ./ifconfig_test.sh: Exec format error
授权管理----允许Re获取权限。
Root是获取手机的管理员用户帐户,它可以访问和修改手机操作系统里几乎所有的文件,这样操作有可能影响到手机的稳定性,导致出现人为性故障现象,如死机、重启等。依据“消费者三包规定”Root属于修改操作系统软件,不属于包修范围。
public boolean onTouchEvent(android.view.MotionEvent event) { int x = event.getX(); int y = event.getY(); 多点触摸时 假如是第i个点 int x = event.getX(i); int y = event.getY(i); 坐标就是 P(x,y) }
下载并安装好腾讯手机管家PC版之后,打开该软件并进入工具箱,你会发现“一键ROOT”和“KingRoot”两款工具。通过USB 将手机同电脑连接后,无论选择那款工具,用户都可以通过简单的鼠标点击,完成之前难以达成的任务。选择“一键ROOT”按钮后,应用工具将智能匹配手机系统,寻找最适合该手机的ROOT方案,几分钟之后,用户手机即可成功获得ROOT权限。
Android应用程序获得root权限
在获取root权限后可以批量卸载系统自带应用
并且可以批量备份,在卸载系统应用之前先备份一次
然后就可以安心卸载系统自带应用了,
我一直是在用应用宝的手机管理软件在工具
箱的常用工具中找到一键ROOT工具,
点击启动该工具便可以轻松的实现手机一键ROOT。
此外,你还可以点击一键优化按钮来优化
手机建议一键优化,选择您需要的单个优化项,如垃圾缓存清理。
你可以尝试安装Kingroot授权管理软件,或者安装一键root大师软件进行root操作,只要你尝试root操作,一定可以root成功的。
Root权限的获取方式: 1.用手机连接电脑,下载一键root工具。 2.下载成功后,打开一键ROOT软件。会出现root准备,点击下一步,正式开始root。 3.检查root条件,要是需要文件备份的话,一定要备份后。点击开始ROOT。 4.root正式开始,需要几钟左右时间,期间可能会重启数次,root就会完成。 5.root完成后,就可以随意删除手机中的垃圾应用了包括系统应用。
Android system 要获取Root权限, 方法众多。
例如 : Bai Root, Amazing Root ...都可以
现以 BAIDU ROOT介绍步骤, 操作如下 :
1、机子下载 BAIDU ROOT(APK版)。
2、运作 BAIDU ROOT, 点选 "一键获取Root"。
3、机子 Root 成功了, 自动重启 。
PS:建议Rooting前备份手机数据。 Rooting过程约需时5min。
你可以试试刷机精灵,蘑菇云,深度刷机,Z4ROOT,甜椒等等,,,注意ROOT后,必须安装SUPERUSER,用于权限的管理,否则将没有任何作用,,,其实手机端也有很多,你可以到安卓软件站搜索ROOT,下载并安装,进行ROOT破解即可,,,不过解决方法会少很多,最好是电脑端ROOT破解。。。。刷机工具,可以到XIAZAIBA下载、。、
Ⅳ 求问android怎么在代码里获得系统文件的读写权限
本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入
android:sharedUserId="android.uid.system"这个属性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
第二个办法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:
1. 同上,加入android:sharedUserId="android.uid.system"这个属性。
2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,
首先找到密钥文件,在我的Android源码目录中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
两个文件。
然后用Android提供的Signapk工具来签名,signapk的源代码是
在"build oolssignapk"下,
用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
这样最后得到的apk和第一个方法是一样的。
最后解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。
只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform
key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到 platform.pk8和platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android 中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package ... has no signatures that match those in shared user android.uid.system",这样也是保护了系统的安全。
Java代码 1、必须是Android系统开发人员,否则你无法修改init.rc等文件。 2、你的应用程序必须要获得system权限。 在应用层 你要想用代码获得系统文件权限,除非你手机root了 要么你自己坐rom。。。。 自己修改 init,rc
方法/步骤
1
首先找到你要操作的文件夹,这里用一个声卡相关的文件夹做例子。选中文件夹。右击它。选择文件的属性,安全--->高级。
2
更改所有者,如图所示。在输入对象名称那儿,输入你的账户名称,我的是微软账户。输入完之后确定。
3
回到刚才的界面,你会看到所有者已经改变了,变成了你的账号。然后确定退出,回到文件夹。(一定要确定后退出回到文件中,才能进行下一步)
4
再次回到刚才的界面。禁止所有继承。
5
添加用户。输入账号,我输入的是微软账号。输入后确定。
通过第三方软件获得Root权限,可以访问和修改手机操作系统里几乎所有的文件,但这样操作有可能影响手机的稳定性,出现死机、重启等人为性故障。
另外获取权限后一般对存储器和CPU等主板上主要部件引起不良。Root属于修改操作系统软件,按照条例不属于包修范围。为了提升顾客满意度,对Root顾客提供免费升级固件服务,如果Root已影响到手机硬件需要更换主板,则需要收取主板费用。
若您的机器Root后需将机器恢复到原来的系统版本,请将机器送到服务中心,由售后工程师帮助检查处理。自行将设备恢复出厂设置是无法取消Root权限的。
对于已经获取所有权限的文件,建议大家还是恢复到原来的状态。今天就跟大家分享一下如何恢复系统文件的默认权限,Windows 7和Windows 8系统都是一样的操作步骤。这里以平时最常修改的hosts文件为例,下图显示已获取hosts文件所有权限。已获得所有权限的hosts文件恢复权限有点类似于于逆向操作,首先点选Administrators组(上图蓝色条),然后点击下方的“高级”按钮,切换到“所有者”标签。高级安全设置-所有者在上面的窗口中,点击“编辑”按钮打开新窗口来更改所有者。编辑所有者到这一步,你会发现可更改的所有者并没有当初替换时的TrustedInstaller,怎么办?别急,点击“其他用户或组”来添加它。在新开的窗口里,输入:NT SERVICE\TrustedInstaller,注意前面的NT SERVICE一定要加上,否则系统不认。添加TrustedInstaller用户完成后点击确定回到上一窗口,此时会看到TrustedInstaller用户出现了,接下去就是选择它,然后一路确定退出各个窗口。文件所有权恢复到默认状态
File类里面就有canRead,canWrite,canExecute方法啊。 查看原帖>>
麻烦采纳,谢谢!
用re
先耐心的把这里的帖子看上几页,再多网络网络资料,不要手机一上手就玩这些要root权限的内容,容易出问题,到时候问题越来越多。。。建议至少2周后再做这些事情,对你会很有帮助。 查看原帖>>
对于一般文件来说,是不需要开启administrator账户的,只需要一个简单的办法就OK啦!比如说,对待下面的这种类型的文件夹。
2
我们只需要击右键,选择“管理员取得所有权”即可。
3
对于一些程序文件来说,只需要你击右键,选择“以管理员身份运行”,也是一个非常便捷的获得管理员权限的办法。
END
开启Administrator账户的方法
Windows 7系统中,administrator账户并不是默认开启的,那么就需要我们手动开启,这也不是很难的啦!对计算机图标,击右键,选择管理。
打开界面后,选择本地用户和组,单击用户,选择administrator账户即可。
3
打开,administrator账户之后,按照以下的操作来进行就行了。
4
这样,在开始登陆的界面,即可以出现administrator账户了,选择此账户即可获得管理员最高权限,不过建议一般来说此账户还是不要开启的好,如果此账户受损,再创建帐户很容易失败。还有,在第一次开启此账户时,是不需要密码的。
这个问题其实LBE已经解决了。 1.在2012隐私保护版中,每次运行时请求系统root,创建一个开机启动服务libload.so,专门用于处理lbe自身的root请求。 2.在2013免root版中,首次运行时自动获取系统root,并把破解过的su文件复制到/system/xbin/.sv ,然后给6755的权限,专门用于处理lbe自身的root请求。 上述两种方案,均为程序自带root管理,用于解决其自身root请求。 以下代码即为方案2的原理,附件中为修改过的su文件。 ******************************************* 安卓的su文件,基本原理为 1234567if (pid=DB(Allow)) then "get uid=0 root" 白名单,程序获取rootelseif (pid=DB(Disable)) Return 黑名单,返回空else View"superuser.active" 数据库无记录,“授权管理”弹出root请求窗口endif修改后的su文件 1if (pid<>"") then "get uid=0 root" 无条件,返回root********************************************** 我反编译b.apk,然后把java应用调用runtime.exec("su")的代码全部改为runtime.exec("sa"), 然后重新打包签名好。安装这个软件。 用RE文件管理器把上面附件的su改名为sa,复制到/system/xbin/sa并改权限rwsx-rsx-r。 以后使用b.apk,获取root权限没有任何提示。 su.zip大小:249.85K 已经过网络安全检测,放心下载 点击下载下载量:133
Ⅵ Android 内部存储/外部存储 及 读写权限
Android 使用 VFS (Virtual File System) 虚拟文件系统。VFS提供了供存储设备挂载的节点,同一存储设备经过分区后,不同的分区可以挂载到不同的节点上,如手机的内置存储卡。
内置存储卡 / 外置SD卡
内部存储 / 外部存储
VFS 的目录以 / 为根节点,根节点下面又有不同的节点。物理存储设备就是挂载到这些节点上。
内部存储卡/外置SD卡 ≠ 内部存储/外部存储
首先明确, 内置存储卡/外置SD卡 是在 物理层面 相对于 手机大众用户 来说的。
外置SD卡:可手动插拔的SD卡。
内置存储卡:焊接在手机内部不可拆卸的存储卡。
而, 内部存 /外部存储 是在 文件系统逻辑层面 相对于 开发者 来说的,指具体的路径。
一般针对某个应用而言的,属于该应用的存储路径叫内部存储,反之为外部存储。
路径: /data/data/package_name
/data/data/ 下都是已安装应用的目录,该目录下包含的文件都是以包名作为文件名的目录,例如 /data/data/com.sankuai.meituan
获取内部存储的方式如下:
其中,参数 mode 指创建模式,一种 4 种
注意: Android 7.0 以上 android.os.Build.VERSION.SDK_INT>=Build.VERSION_CODES.N 使用3/4 常量时,将会导致SecurityException,这意味着 不能通过名称共享私有文件 。
尝试共享 file://URI URI将会导致FileUriExposedException,StrictMode API政策禁止在您的应用外部公开file://URL。如果您的应用需要与其他应用共享私有文件,则可以使用 FileProvider 与 FLAG_GRANT_READ_URI_PERMISSION 配合使用。 Android 7.0 行为变更 通过FileProvider在应用间共享文件吧
外部存储,可以是 外置SD卡 或 内置存储卡的部分分区。
外部存储,分为 公共目录 和 私有目录
获取方式
检查可用性的方法:
Android 4.3 以下,只能通过 Context#getExternalFilesDir(type) 来获取外部存储在内置存储卡分区的私有目录,无法获取外置SD卡。
Android 4.3 开始,可以通过 Context#getExternalFilesDirs(type) 获取一个File数组,包含了内置存储卡分区和外置SD的私有目录地址。
可以使用兼容库的静态方法 ContextCompate.getExternalFilesDirs() 兼容 4.3。
感谢以下文章作者
解析Android内部存储、外部存储的区别