android獲取url圖片
① Android 兩個Activity之間怎樣使用Uri傳遞圖片,怎樣獲取圖片的Uri,怎樣通過Uri得到圖片
圖片類:
class Image implements Serializable{
private String url;
private Bitmap bitmap;
}
傳遞:
Image image = new Image();
image.seturl(url);
image.setbitmap(bitmap);
intent.putExtra("image", image);
獲取
Image image = intent.getSerializableExtra("image");
String url = image.geturl();
Bitmap bitmap =image.getbitmap();
② android如何通過path得到uri
最近做項目要通過圖片的絕對路徑找到圖片的URI,然後刪除圖片,小小總結一下獲取URI的方法,親自試驗在
android 4.1.3的系統上都是可用的。
1.將所有的圖片路徑取出,遍歷比較找到需要的路徑,取出URI,效率較低
其中 MediaStore.MediaColumns.DATA 欄位存的就是圖片的絕對路徑,
最後mImageUri得到的就是圖片的URI
1 Uri mUri = Uri.parse("content://media/external/images/media");
2 Uri mImageUri = null;
3 Cursor cursor = managedQuery(
4 MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null,
5 MediaStore.Images.Media.DEFAULT_SORT_ORDER);
6 cursor.moveToFirst();
7
8 while (!cursor.isAfterLast()) {
9 String data = cursor.getString(cursor
10 .getColumnIndex(MediaStore.MediaColumns.DATA));
11 if (picPath.equals(data)) {
12 int ringtoneID = cursor.getInt(cursor
13 .getColumnIndex(MediaStore.MediaColumns._ID));
14 mImageUri = Uri.withAppendedPath(mUri, "" + ringtoneID);
15 break;
16 }
17 cursor.moveToNext();
18 }2.直接從媒體資料庫根據欄位取出相應的記錄,效率較高
1 //TYLT: add by anyf 20121027 start
2 String type = Utils.ensureNotNull(intent.getType());
3 Log.d(TAG, "uri is " + uri);
4 if (uri.getScheme().equals("file") && (type.contains("image/")))
{
5 String path = uri.getEncodedPath();
6 Log.d(TAG, "path1 is " + path);
7 if (path != null) {
8 path = Uri.decode(path);
9 Log.d(TAG, "path2 is " + path);
10 ContentResolver cr = this.getContentResolver();
11 StringBuffer buff = new StringBuffer();
12 buff.append("(")
13 .append(Images.ImageColumns.DATA)
14 .append("=")
15 .append("'" + path + "'")
16 .append(")");
17 Cursor cur = cr.query(
18 Images.Media.EXTERNAL_CONTENT_URI,
19 new String[] { Images.ImageColumns._ID },
20 buff.toString(), null, null);
21 int index = 0;
22 for (cur.moveToFirst(); !cur.isAfterLast(); cur
23 .moveToNext()) {
24 index = cur.getColumnIndex(Images.ImageColumns._ID);
25 // set _id value
26 index = cur.getInt(index);
27 }
28 if (index == 0) {
29 //do nothing
30 } else {
31 Uri uri_temp = Uri
32 .parse("content://media/external/images/media/"
33 + index);
34 Log.d(TAG, "uri_temp is " + uri_temp);
35 if (uri_temp != null) {
36 uri = uri_temp;
37 }
38 }
39 }
40 }
41 //TYLT: add by anyf 20121027 end3.直接根據路徑通過 ContentProvider 的 delete() 方法刪除圖片,兩行代碼搞定,效率最高
1 String params[] = new String[]{filepath};
2
ctx.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
MediaStore.Images.Media.DATA + " LIKE ?", params);
③ 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獲取資料庫圖片uri路徑並用imageView顯示
我想問你最後怎麼解決的,我也是這個問題,網上也查不到解決方法,很煩!
⑤ android 下使用Cursor如何獲得專輯圖片
android下使用cursor獲取專輯圖片,主要是在資料庫裡面先保存專輯圖片的url地址,當使用cursor游標遍歷資料庫數據的時候,使用資源操作類進行載入相應的url,如下代碼:
Cursor cursor = context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
Log.e("cursor" , (cursor==null) + "");
while(cursor.moveToNext()) {
// 查找封面圖片
long albumId = cursor.getLong(5);
// 讀取專輯圖片
String album_uri = "content://media/external/audio/albumart"; // 專輯Uri對應的字元串
Uri albumUri = ContentUris.withAppendedId(Uri.parse(album_uri), albumId);
// 取圖片 ==> 得到一個輸入流
Bitmap coverPhoto = null ;
try {
InputStream is = context.getContentResolver().openInputStream(albumUri);
if(null != is) {
coverPhoto = BitmapFactory.decodeStream(is);
}
} catch (Exception e) {
e.printStackTrace();
}
data.add(new Audio(cursor.getLong(0), cursor.getString(1) , cursor.getString(2) , cursor.getLong(3) , cursor.getString(4) , albumId , coverPhoto));
}
cursor.close();
⑥ url文件安卓手機怎麼打開
url文件安卓手機打開需要一個帶有瀏覽器以及正常上網的能力手機。方法如下:
1、在文件管理器中找到需要打開的url文件,並選擇打開方式為「文本」。
(6)android獲取url圖片擴展閱讀:
URL格式
1、最常用的是HTTP協議,它也是WWW中應用最廣的協議。
2、file資源是本地計算機上的文件。格式file:///,注意後邊應是三個斜杠。
4、gopher通過Gopher 協議訪問該資源。
5、http通過HTTP 訪問該資源。 格式 HTTP://
6、https通安全的 HTTPS 訪問該資源。 格式 HTTPS://
7、mailto資源為電子郵件地址,通過 SMTP 訪問。 格式 mailto:
8、MMS通過支持MMS(流媒體)協議的播放該資源。(代表軟體:Windows Media Player)格式 MMS://
9、ed2k通過支持ed2k(專用下載鏈接)協議的P2P軟體訪問該資源。(代表軟體:電驢) 格式 ed2k://
10、Flashget通過支持Flashget:(專用下載鏈接)協議的P2P軟體訪問該資源。(代表軟體:快車) 格式 Flashget://
⑦ 安卓手機如何打開.url文件
安卓手機打開.url文件首先需要在文件管理器中找到需要打開的url文件,再用文本方式打開,點擊使用HTML查看器打開。最底下一行是網路地址,從=號後面開始選擇,直接復制,打開瀏覽器在瀏覽器搜索欄中粘貼url,點擊進入即可看到相關內容。
安卓手機打開.url文件需要一個帶有瀏覽器以及正常上網能力的手機,打開方式如下:
1、在文件管理器中找到需要打開的url文件,並選擇打開方式為文本。
2、用文本方式打開後,會彈出查看工具,點擊使用HTML查看器打開。
3、最底下一行是網路地址,從=號後面開始選擇,直接復制。
4、打開瀏覽器在瀏覽器搜索欄中粘貼url,點擊進入
URL:統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標准資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎麼處理它。
⑧ 想問一下在Android studio裡面怎麼實現顯示網路圖片,就是輸入一個網址,顯示一張圖片
使用第三方圖片載入框架如picasso,使用很簡單,以下幾步即可完成你的需求。
在app的build.gradle文件中添加依賴
implementation 'com.squareup.picasso:picasso:2.71828'
傳入網路圖片地址,以及要在哪個ImageView上顯示
Picasso.get().load(imageurl).into(mImageView);
很簡單,通過以上步驟,就可以完成在Android studio裡面怎麼實現顯示網路圖片,就是輸入一個網址,顯示一張圖片。
⑨ android 如何獲取保存的圖片的地址 並存到資料庫中
安卓中如何獲取保存的圖片uri 並保存到sqlite資料庫中
有如下兩種方法,僅供參考
方法一:java代碼
public void saveIcon(Bitmap icon) {
if (icon == null) {
return;
}
// 最終圖標要保存到瀏覽器的內部資料庫中,系統程序均保存為SQLite格式,Browser也不例外,因為圖片是二進制的所以使用位元組數組存儲資料庫的
// BLOB類型
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 將Bitmap壓縮成PNG編碼,質量為100%存儲
icon.compress(Bitmap.CompressFormat.PNG, 100, os);
// 構造SQLite的Content對象,這里也可以使用
raw ContentValues values = new ContentValues();
// 寫入資料庫的
Browser.BookmarkColumns.TOUCH_ICON欄位 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray());
DBUtil.update(....);
//調用更新或者插入到資料庫的方法
}
}
方法二:如果數據表入口時一個content:URIJava代碼
import android.provider.MediaStore.Images.Media;
import android.content.ContentValues;
import java.io.OutputStream;
// Save the name and description of an image in a ContentValues map.
ContentValues values = new ContentValues(3);
values.put(Media.DISPLAY_NAME, "road_trip_1");
values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles");
values.put(Media.MIME_TYPE, "image/jpeg");
// Add a new record without the bitmap, but with the values just set.
// insert() returns the URI of the new record.
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
// Now get a handle to the file for that record, and save the data into it.
// Here, sourceBitmap is a Bitmap object representing the file to save to the database.
try {
OutputStream outStream = getContentResolver().openOutputStream(uri);
sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream);
outStream.close();
} catch (Exception e) {
Log.e(TAG, "exception while writing image", e);
}
原文請看http://www.bafenbaosoft.com/post/48.html