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

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