android安全和权限①----ShareUserId和文件访问(File Access)--Security and Permission
SharedUserId
关于SharedUserId的总结:
我们知道一般每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见,而我们可以使他们对其他的应用程序可见,这会使我们用到SharedUserId,也就是让两个apk使用相同的userID,这样它们就可以看到对方的文件。为了节省资源,具有相同ID的apk也可以在相同的linux进程中进行(这儿需要注意,并不是一定要在一个进程里面运行),共享一个虚拟机。
我们可以建立两个application,分别为test_a和test_b,我们的目的就是让test_b访问test_a里面的文件或者是数据:具体做法如下
在test_a应用程序的包com.test1的manifest里面添加anroid:shareuserid=“com.test2”(注:这儿test_a是被访的apk,so 加上这句 android:exported="false"说明它是私有的,然后会让shareuserid应用更有力)
具体内容如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test1" android:sharedUserId="com.test2" android:exported="false" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".TestAcitvity1" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
然后再应用程序test_b的包com.test2下的manifest.xml中添加anroid:shareuserid=“com.test2”
然后在test_b的TestActivity2中添加如下代码:
private Button.OnClickListener button_listener = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setClassName("us.imnet.iceskysl.db","us.imnet.iceskysl.db.DBSharedPreferences"); //intent.setClassName("com.test1","com.test1.TestActivity1"); startActivity(intent); } };
这样就可以调整跳转,然后就可以运行。完整代码是:
package com.test2; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class TestActivity2 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); find_and_modify_button(); } private void find_and_modify_button(){ Button change_test1 = (Button) findViewById(R.id.change_test1); change_test1.setOnClickListener(button_listener); } private Button.OnClickListener button_listener = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setClassName("us.imnet.iceskysl.db","us.imnet.iceskysl.db.DBSharedPreferences"); //intent.setClassName("com.test1","com.test1.TestActivity1"); startActivity(intent); } }; }
运行结果是:从test_b的TestActivity1中进去,然后跳到TestActivity2中,这样可以读取到它里面的数据出来
文件访问:
可以通过getSharedPreferences(String, int), openFileOutput(String, int) 或者 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)创建一个新文件时, 你可以同时或分别使用 MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 标志允许其它包读/写此文件。
下面是用getSharedPreferences(String, int),创建到文件,修改它的属性为MODE_WORLD_WRITEABLE 则看到它的文件权限的变化:
(补充):关于linux下面文件权限
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限
android安全和权限①----ShareUserId和文件访问(File Access)--Security and Permission相关推荐
- Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位
Linux下的基本指令 目录: 权限的概念 权限管理 文件访问权限的设置方法 目录的权限 粘滞位 权限的概念 Linux下用户有两种: 超级用户(root).普通用户. 超级用户:具有最高权限,可以在 ...
- Android中SeLinux权限 .te文件编写
在android中添加一个LocalSocket通信,权限部分折腾了好几天,终于搞定了. 首先在root权限下使用setenforce 0命令放开selinux权限,看看需要的操作是否能成功.如果可以 ...
- 64位 ubuntu android studio gradle 权限不够 缺少文件和权限导致
安装 32位 库文件 sudo apt-get install lib32z1 给文件夹加权限 chmod 777 -R SDK chmod 777 -R android-studio -R表示所有 ...
- 【安卓笔记】android申请储存权限,读写文件
首先在AndroidManifest.xml中注册读取USB存储设备中的内容 <!-- 读取您的USB存储设备中的内容 --><uses-permission android:nam ...
- android tmp目录权限不够,/tmp目录下执行脚本失败提示Permission denied
Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...
- Android隐藏的权限管理机制:AppOps
最近整理以前开发中的笔记,发现有点零乱,遂决定将这些笔记整理迁移到 CSDN 上,分享出来与大家一起交流学习.如果有发现不当或有待商榷的地方,欢迎大家拍砖和指正.废话结束,进入本文正题:Android ...
- linux 文件权限 rwt,linux 文件权限
三种特殊权限简介 SUID 当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行, 也就是说无论谁来执行这个文件,他都有文件所有者的特权. 如果所有者是 root 的话,那么执行人 ...
- Android Studio SD卡访问权限及asserts文件夹下的文件操作
Android Studio SD卡访问权限 1.在 AndroidManifext.xml 中添加如下代码 <uses-permission android:name="androi ...
- linux文件的权限模式,Linux文件权限和访问模式
为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限: 所有者权限:文件所有者能够进行的操作 组权限:文件所属用户组能够进行的操作 外部权限(其他权限):其他用户 ...
最新文章
- 浅谈并发与并行(一)
- jcenter下载慢
- ubuntu下小键盘不能用
- frpc在linux下开机启动,frp 设置开机自启
- 实战RxSwift中的Observable, subscribe, dispose, filter
- c语言源程序注释说明只能,C语言选择题
- 《自己动手写网络爬虫》笔记3-宽度优先遍历互联网
- GD32上SFUD万能Flash驱动移植
- Python读取文件找出重复元素
- 根2是无理数的几种证明方法
- noi linux 比赛使用哪个编译器,noi linux简介.pdf
- Java实现HTML页面截图功能
- 阿里云服务器可选系统有哪些?如何选择?
- 《击掌为盟》读后感1742字
- ABP框架—从项目下载到运行详细讲解
- 修改DNS—出现一个意外,不能完成更改
- 散转程序c语言,单片机 散转表程序的使用
- 小说里的编程 【连载之二十二】元宇宙里月亮弯弯
- 8、Hudson集成服务器的安装配置与使用
- ps切图与版心页面布局注意问题