導航:首頁 > 操作系統 > android獲取圖庫路徑

android獲取圖庫路徑

發布時間:2022-08-22 15:10:49

android 怎麼獲取相冊路徑

android手機4.2版本之前是一個方法,大於4.2版本又是一個方法。

注意:現在手機市場android版本2015面上半年平均4.4,現在是平均5.0了。

  1. before

    你網路一下,都能查到,很簡單.

  2. after

    private void startPickPhotoActivity() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.setType("image/*"); // Or 'image/ jpeg '
    startActivityForResult(intent, RESULT_PICK_PHOTO_NORMAL);
    }


// 獲得圖片返回的路徑
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == RESULT_PICK_PHOTO_NORMAL) {
if (resultCode == RESULT_OK && data != null) {

//選中圖片路徑

mFileName = MainActivity.getPath(getApplicationContext(),
data.getData());
if ("".equals(mFileName)) {
return;
}
Intent intent = new Intent(this, EditActivity.class);
intent.putExtra("pathName", mFileName);
startActivity(intent);
}
}
}

@TargetApi(Build.VERSION_CODES.KITKAT)
public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
if (UriUtils.isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/"
+ split[1];
}

}
// DownloadsProvider
else if (UriUtils.isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"),
Long.valueOf(id));
return UriUtils.getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (UriUtils.isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
final String selection = MediaColumns._ID + "=?";
final String[] selectionArgs = new String[] { split[1] };
return UriUtils.getDataColumn(context, contentUri, selection,
selectionArgs);
}
}
// MediaStore (and general)
else if ("content".equalsIgnoreCase(uri.getScheme())) {
// Return the remote address
if (UriUtils.isGooglePhotosUri(uri))
return uri.getLastPathSegment();
return UriUtils.getDataColumn(context, uri, null, null);
}
// File
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}

⑵ 誰知道安卓圖庫的路徑(截圖的存放路徑)

手機內部存儲的Pictures/Screenshots/目錄下

⑶ Android獲取本地圖片路徑

最好把錯誤日誌 全部貼出來

⑷ Android開發,圖庫獲取圖片路徑

public class TestCameraActivity extends Activity implements OnClickListener{ private Uri mOutPutFileUri; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button takePiCButton = (Button) this.findViewById(R.id.button1); takePiCButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: saveFullImage(); break; default: break; } } private void saveFullImage(){ Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //文件夾aaaa String path = Environment.getExternalStorageDirectory().toString()+"/aaaa"; File path1 = new File(path); if(!path1.exists()){ path1.mkdirs(); } File file = new File(path1,System.currentTimeMillis()+".jpg"); mOutPutFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, mOutPutFileUri); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 1){ Uri imageUri = null; if(data != null){ if(data.hasExtra("data")){ Bitmap thunbnail = data.getParcelableExtra("data"); //處理縮略圖 } }else{ //處理mOutPutFileUri中的完整圖像 } } } }

⑸ 安卓開發 獲得圖片路徑失敗

String path = cursor.getString(column_index);改為
String path = cursor.getString(column_index-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;
}

⑺ android怎麼從sd卡指定的文件夾中獲取所有圖片的路徑URL,謝謝~感謝各位大神了

直接調用文件管理器選擇圖片即可。
1、調用系統提供的圖片選擇器,代碼如下:
//注意,在Android4.4系統下建議使用 Intent.ACTION_OPEN_DOCUMENT方式
if (Utility.isKK()) {

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image
public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {

Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column

};
處理返回結果:
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PIC_RESULT://選擇圖庫
case PIC_RESULT_KK:
imageFileUri = intent.getData();//獲取選擇圖片的URI
break;


2、除此自外,系統還提供一種選擇器,這個圖片選擇器可以屏蔽掉那個auto backup的目錄.所以就開始打算用這個圖片選擇器來選圖片了.
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);//ACTION_OPEN_DOCUMENT
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/jpeg");
if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.KITKAT){
startActivityForResult(intent, SELECT_PIC_KITKAT);
}else{
startActivityForResult(intent, SELECT_PIC);
}
為什麼要分開不同版本呢?其實在4.3或以下可以直接用ACTION_GET_CONTENT的,在4.4或以上,官方建議用ACTION_OPEN_DOCUMENT,主要區別是他們返回的Uri.4.3返回的是帶文件路徑的,而4.4返回的卻是content://com.android.providers.media.documents/document/image:3951這樣的,沒有路徑,只有圖片編號的uri.可以通過以下方式,處理URI。
參考:Android 4.4從圖庫選擇圖片,獲取圖片路徑並裁剪
public static String getPath(final Context context, final Uri uri) {

final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
// ExternalStorageProvider
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];

if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}

// TODO handle non-primary volumes
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {

final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));

return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];

Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}

final String selection = "_id=?";
final String[] selectionArgs = new String[] {
split[1]
};

return getDataColumn(context, contentUri, selection, selectionArgs);
}
}
// MediaStore (and general)
else if ("content".equalsIgnoreCase(uri.getScheme())) {

// Return the remote address
if (isGooglePhotosUri(uri))
return uri.getLastPathSegment();

return getDataColumn(context, uri, null, null);
}
// File
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}

return null;
}

public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {

Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column
};

try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
null);
if (cursor != null && cursor.moveToFirst()) {
final int index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}

public static boolean isExternalStorageDocument(Uri uri) {
return "com.android.externalstorage.documents".equals(uri.getAuthority());
}

public static boolean isDownloadsDocument(Uri uri) {
return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

public static boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}

public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}

3、使用其它開源組件如PhotoView。

⑻ 如何獲得android手機拍照後照片的存放目錄

一般安卓手機的相機功能都會有固定的存放路徑,這個位置默認為:/sdcard/DCIM/100Andro或者/sdcard/DCIM/Camera,這里的sdcard是指手機中的SD卡,在電腦中顯示的為可移動磁碟。根據不同品牌安卓手機的後期開發,文件夾名稱可能不太一樣,但一般是在DCIM目錄文件夾里邊,當然也會有特別,例如在酷派手機中手機拍照的圖片是存放在根目錄中的Photo中。
首先,打開您手機上的相機,點擊設置按鈕,裡面會有一個選擇存儲位置,
一般默認是存儲在手機內存,可以進行修改,存到SD卡中。
通過數據線連接到電腦後,一般是一個叫DCIM。

⑼ 怎麼獲取指定手機存儲相片的路徑android

首先是相冊圖片的獲取:

private final String IMAGE_TYPE = "image/*";
private final int IMAGE_CODE = 0; //這里的IMAGE_CODE是自己任意定義的

//使用intent調用系統提供的相冊功能,使用startActivityForResult是為了獲取用戶選擇的圖片

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
getAlbum.setType(IMAGE_TYPE);
startActivityForResult(getAlbum, IMAGE_CODE);

//重寫onActivityResult以獲得你需要的信息

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (resultCode != RESULT_OK) { //此處的 RESULT_OK 是系統自定義得一個常量
Log.e(TAG,"ActivityResult resultCode error");
return;
}

Bitmap bm = null;

//外界的程序訪問ContentProvider所提供數據 可以通過ContentResolver介面
ContentResolver resolver = getContentResolver();

//此處的用於判斷接收的Activity是不是你想要的那個
if (requestCode == IMAGE_CODE) {
try {
Uri originalUri = data.getData(); //獲得圖片的uri

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); //顯得到bitmap圖片

這里開始的第二部分,獲取圖片的路徑:

String[] proj = {MediaStore.Images.Media.DATA};

//好像是android多媒體資料庫的封裝介面,具體的看Android文檔
Cursor cursor = managedQuery(originalUri, proj, null, null, null);
//按我個人理解 這個是獲得用戶選擇的圖片的索引值
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//將游標移至開頭 ,這個很重要,不小心很容易引起越界
cursor.moveToFirst();
//最後根據索引值獲取圖片路徑
String path = cursor.getString(column_index);
}catch (IOException e) {
Log.e(TAG,e.toString());
}
}
}

⑽ android小程序,從資料庫中讀取圖片路徑然後進行顯示,不是背景圖片

感覺這樣應該可以,
先從資料庫裡面獲得
這個圖片的絕對路徑
然後
使用UIL類
URL
url=new
URL(file:///路徑);
然後得到這個文件的輸入流InputStream
in=url.openStream();
然後得到此圖片的點陣圖Bitmap
bitmap=BitmapFactory.decodeStream(in);
ImageView
img=new
ImageView(this);
img.setImageBitmap(bitmap);
從網路上的話是這樣,但是手機上是不是這樣就不清楚了你可以試一下。
那個圖片應該是要放在手機上。

閱讀全文

與android獲取圖庫路徑相關的資料

熱點內容
武漢市農科院伺服器地址 瀏覽:100
androidtextview邊框線 瀏覽:216
邵氏古裝鬼片大全 瀏覽:756
最全的武俠小說打包下載 瀏覽:774
冷鏈食品配備源碼 瀏覽:324
蘋果相片簿加密 瀏覽:815
農行app繳的保險如何查信息 瀏覽:316
韓劇女主在自家鋼琴讓男生摸她胸 瀏覽:670
兩個字的中國電影 瀏覽:754
顧傾城女主的小說 瀏覽:942
觸摸屏編程cd和dc的區別 瀏覽:908
印度可以購買加密貨幣嗎 瀏覽:123
找上電影 瀏覽:965
太原少兒編程培訓加盟如何 瀏覽:913
小電影網站入 瀏覽:578
同一文件名怎麼提取到一個文件夾 瀏覽:823
單片機定時器對照表 瀏覽:734
小孩坐綠皮火車睡著了去了外國的電影 瀏覽:921
一個女的在鞦韆上夾葡萄 瀏覽:415
綠色無安裝執行程序如何加密 瀏覽:941