android7.0适配权限问题

12-07 10:52:56.107 22139 29957 W ApplicationSettingsFragment: exportMessages getAppropriateFileName fileName =//sdcard//message//sms001.db
12-07 10:52:56.123 22139 29957 D ApplicationSettingsFragment: exportMessages query sms cursor count is 2
12-07 10:52:56.123 22139 29957 E ApplicationSettingsFragment: exportMessages can't create the database file
12-07 10:52:56.123 22139 29957 W System.err: java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
12-07 10:52:56.123 22139 29957 W System.err: at android.app.ContextImpl.checkMode(ContextImpl.java:2165)
12-07 10:52:56.123 22139 29957 W System.err: at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:674)
12-07 10:52:56.123 22139 29957 W System.err: at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:668)
12-07 10:52:56.123 22139 29957 W System.err: at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:283)
12-07 10:52:56.123 22139 29957 W System.err: at com.android.messaging.ui.appsettings.ApplicationSettingsActivity$ApplicationSettingsFragment.copyToPhoneMemory(SourceFile:638)
12-07 10:52:56.123 22139 29957 W System.err: at com.android.messaging.ui.appsettings.ApplicationSettingsActivity$ApplicationSettingsFragment.-wrap1(SourceFile)
12-07 10:52:56.124 22139 29957 W System.err: at com.android.messaging.ui.appsettings.ApplicationSettingsActivity$ApplicationSettingsFragment$6.run(SourceFile:563)
myDatabase = openOrCreateDatabase(DATABASE_NAME,1, null);

4中模式:

四种模式,分别为: 
Context.MODE_PRIVATE    = 0
Context.MODE_APPEND    = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2

7.0后
代码调用,存放在data/data/包名/xxx
目录下的文件设置
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
会抛安全异常!!!

1、
SharedPreferences sp =ctx.getSharedPreferences(“CITY”, MODE_PRIVATE);
2、
SQLiteDatabase db =this.openOrCreateDatabase(“test_db.db”, Context.MODE_PRIVATE, null);
3、
getCacheDir()方法用于获取/data/data/cache目录

4、

FileOutputStream fos = context.openFileOutput(fileName, context.MODE_PRIVATE);

FileInputStream fis = context.openFileInput(fileName);
注:
如果使用上面的方法,当你的应用在被用户卸载后,
data/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
getExternalCacheDir和getExternalFilesDir
是存放在/storage/sdcard0/Android/data/packagename下面的,这个是放在外置存储卡的,这个目录下的内容 可以使用文件浏览系统查看到,但是如果清空数据或者卸载应用,俩个目录下的文件也将被清空。

附加:
将文件写入SD卡内:
获取SDCard的状态:
Environment.getExtemalStorageState()
Environment.MEDIA_MOUNTED手机装有SDCard,并且可以进行读写
获取SDCard的目录:Environment.getExtemalStorageDirectory()

学习:
http://www.2cto.com/kf/201312/267581.html
http://blog.csdn.net/leeo1010/article/details/28600575
http://www.cnblogs.com/rond/p/3553156.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章