導航:首頁 > 操作系統 > androidfilemkdirs

androidfilemkdirs

發布時間:2023-05-15 11:50:48

1. android怎麼調用系統自帶的圖庫打開指定目錄的相冊

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//完成照相後回調用此方法
super.onActivityResult(requestCode, resultCode, data);
case 1:
switch (resultCode) {
case Activity.RESULT_OK://照相完成點擊確定
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用
Log.v("TestFile", "SD card is not avaiable/writeable right now.");
return; }
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 獲取相機返回的數據,並轉換為Bitmap圖片格式
FileOutputStream b = null;
File file = new File("/sdcard/pk4fun/");
file.mkdirs();// 創建文件夾,名稱為pk4fun // 照片的命名,目標文件夾下,以當前時間數字串為名稱,即可確保每張照片名稱不相同。網上流傳的其他Demo這里的照片名稱都寫死了,則會發生無論拍照多少張,後一張總會把前一張照片覆蓋。細心的同學還可以設置這個字元串,比如加上「IMG」字樣等;然後就會發現sd卡中myimage這個文件夾下,會保存剛剛調用相機拍出來的照片,照片名稱不會重復。
String str = null;
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");// 獲取當前時間,進一步轉化為字元串
date = new Date(resultCode);
str = format.format(date);
String fileName = "/sdcard/myImage/" + str + ".jpg";
sendBroadcast(fileName);
try {
b = new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
} break;
case Activity.RESULT_CANCELED:// 取消
break;
}
break;
case 2:
switch (resultCode) {
case Activity.RESULT_OK: {
Uri uri = data.getData();
Cursor cursor = mActivity.getContentResolver().query(uri, null,
null, null, null);
cursor.moveToFirst();
String imgNo = cursor.getString(0); // 圖片編號
String imgPath = cursor.getString(1); // 圖片文件路徑
String imgSize = cursor.getString(2); // 圖片大小
String imgName = cursor.getString(3); // 圖片文件名
cursor.close();
// Options options = new BitmapFactory.Options();
// options.inJustDecodeBounds = false;
// options.inSampleSize = 10;
// Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);
}
break;
case Activity.RESULT_CANCELED:// 取消
break;
}
break;
}

2. 如何調用android的拍照或本地相冊選取,然後再實現相片上傳伺服器

首先是拍照:使用Intent即可,

[java] view plainprint?
01.final String start = Environment.getExternalStorageState();
02.private static final String PHOTOPATH = "/photo/";
03.
04.if(start.equals(Environment.MEDIA_MOUNTED)){
05.Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
06.File file = new File(Environment.getExternalStorageDirectory()+PHOTOPATH);
07.if(!file.exists()){
08.file.mkdirs();
09.}
10.tempphontname = System.currentTimeMillis()+".jpg";
11.buffer.append(Environment.getExternalStorageDirectory()+PHOTOPATH).append(tempphontname);
12.intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(buffer.toString())));
13.startActivityForResult(intent, 1);
14.}
final String start = Environment.getExternalStorageState();
private static final String PHOTOPATH = "/photo/";

if(start.equals(Environment.MEDIA_MOUNTED)){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory()+PHOTOPATH);
if(!file.exists()){
file.mkdirs();
}
tempphontname = System.currentTimeMillis()+".jpg";
buffer.append(Environment.getExternalStorageDirectory()+PHOTOPATH).append(tempphontname);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(buffer.toString())));
startActivityForResult(intent, 1);
}
其次是從本地相冊選:依舊是Intent.

如下代碼:

[java] view plainprint?
01.if(start.equals(Environment.MEDIA_MOUNTED)){
02. Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
03. getImage.addCategory(Intent.CATEGORY_OPENABLE);
04. getImage.setType("image/jpeg");
05. startActivityForResult(getImage, 0);
06.}
if(start.equals(Environment.MEDIA_MOUNTED)){
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType("image/jpeg");
startActivityForResult(getImage, 0);
}

接下來是主要的:因為調用完系統的方法後,回返回到回調方法onActivityResult(int, int, Intent)中,

在裡面進行主要的照片上傳伺服器的操作,

見代碼:

[java] view plainprint?
01.@Override
02. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
03. ContentResolver resolver = getContentResolver();
04. if(requestCode==1)//
05. {
06. if(resultCode==Activity.RESULT_OK)
07. {
08. if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
09. {
10.ew Thread(new Runnable()
11. {
12. @Override
13. public void run() {
14.//進行上傳操作
15.}
16.}.start();
轉載

3. Android File的mkdir和mkdirs的區別

mkdir是創建目錄,只是創建單擊目錄,而且必須是已經存在察神鍵的目錄下創建目錄。
mkdirs可以創建多敗巧級目錄,可以在不存在的目錄下創建多級目錄,例如mkdirs a/b(反瞎坦斜杠朝那邊 我忘了)。就是創建a目錄,再在a目錄中創建b目錄

4. android系統怎麼設置內部存儲的訪問許可權

Android支持外部存儲(case-insensitive filesystem with immutable POSIX permission classes and modes)。

外部存儲可以通過物理介質提供(如SD卡),也可以通過將內部存儲中的一部分封裝而成,設備可以有多個外部存儲實例。訪問外部存儲的許可權
從Android 1.0開始,寫操作受許可權WRITE_EXTERNAL_STORAGE保護。

從Android 4.1開始,讀操作受許可權READ_EXTERNAL_STORAGE保護。

從Android 4.4開始,應用可以管理在它外部存儲上的特定包名目錄,而不用獲取WRITE_EXTERNAL_STORAGE許可權。

比如,一個包名為com.example.foo的應用,可以自由訪問外存上的Android/data/com.example.foo/目錄。外部存儲對數據提供的保護較少,所以系統不應該存儲敏感數據在外部存儲上。

特別地,配置和log文件應該存儲在內部存儲中,這樣它們可以被有效地保護。對於多用戶的情況,一般每個用戶都會有自己獨立的外部存儲,應用僅對當前用戶的外部存儲有訪問許可權。Environment API的目錄
getDataDirectory():用戶數據目錄。

getDownloadCacheDirectory():下載緩存內容目錄。getExternalStorageDirectory():主要的外部存儲目錄。

但是這個目錄很可能當前不能訪問,比如這個目錄被用戶的PC掛載,或者從設備中移除,或者其他問題發生,你可以通過getExternalStorageState()來獲取當前狀態。

還有多用戶或者多外部存儲的情況,此文不再討論。為了不污染用戶的根命名空間,一般不會直接使用這個外部存儲的根目錄。

任何應用私有的文件的應該被放置在 Context.getExternalFilesDir返回的目錄下,在應用被卸載的時候,系統會清理的就是這個目錄。

另一些共享文件應該被放置在 (String)返回的目錄中。

寫這個路徑需要 WRITE_EXTERNAL_STORAGE許可權,讀需要 READ_EXTERNAL_STORAGE許可權,當然寫許可權默認包含了讀許可權。從KITKAT 即Android 4.4開始,如果你的應用只是需要存儲一些內部數據,可以考慮使用 :

getExternalFilesDir(String)或者getExternalCacheDir(),它們不需要獲取許可權。(String type)這個方法接收一個參數,表明目錄所放的文件的類型,傳入的參數是Environment類中的DIRECTORY_XXX靜態變數,比如DIRECTORY_DCIM等。

注意:傳入的類型參數不能是null,返回的目錄路徑有可能不存在,所以必須在使用之前確認一下,比如使用File.mkdirs創建該路徑。getRootDirectory()得到Android的根目錄。

isExternalStorageEmulated()設備的外存是否是用內存模擬的,是則返回true。(API Level 11)

isExternalStorageRemovable()設備的外存是否是可以拆卸的,比如SD卡,是則返回true。(API Level 9)Context API中的目錄
getExternalFilesDir(String type)是應用在外部存儲上的目錄。

和Environment類的(String type)方法類似,返回包含參數指定的特定類型文件的子目錄。

getExternalCacheDir()是應用的在外部存儲上的緩存目錄。從Android 4.4這兩個方法不需要讀寫許可權,是針對於本應用來說,如果要訪問其他應用的相關目錄,還是需要聲明讀寫許可權。

Android 4.4之前的版本要訪問的話還是要聲明讀寫許可權的,如果沒有在manifest中寫許可權,上面兩個get方法都會返回null。與上面兩個方法形成對比的是下面兩個方法:

getFilesDir()

getCacheDir()

這兩個方法得到的是內存上的目錄。這些目錄都是屬於應用的,當應用被卸載的時候,裡面的內容都會被移除,但是不要依賴於系統的操作。

閱讀全文

與androidfilemkdirs相關的資料

熱點內容
伺服器磁碟滿了文件刪不掉該如何處理 瀏覽:847
壓縮彈簧展開長度 瀏覽:509
如何共享國外app 瀏覽:687
淘寶app如何掃描圖片 瀏覽:594
反編譯作業幫 瀏覽:856
釘釘打卡伺服器過什麼意思 瀏覽:139
鏤空加密隔斷牆效果圖 瀏覽:539
windows7怎麼安裝證書伺服器 瀏覽:952
證券業務的程序員 瀏覽:202
u點伺服器wifi密碼如何設置 瀏覽:864
寶馬x5大燈編程 瀏覽:673
python安裝和使用 瀏覽:381
加密的門禁卡復制了用不了 瀏覽:714
javacsv讀寫 瀏覽:806
ug編程教程pdf 瀏覽:763
latex編譯軟體安卓版 瀏覽:248
如何在信合app上交居民醫保 瀏覽:109
丑惡pdf 瀏覽:365
陝西定頻壓縮機銷售公司 瀏覽:795
安卓系統如何幫人打王者 瀏覽:427