『壹』 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怎樣獲取視頻縮略圖
需要快速提取圖片和視頻縮略圖可以直接訪問 android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails這兩個資料庫,即可查詢出來縮略圖 。 如何判斷文件呢? 可以通過Cursor遍歷資料庫,對比INTERNAL_CONTENT_URI欄位的值,這是一個Uri,這里保存著Android手機SD卡上的多媒體文件完整路徑。 Uri originalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; //若為視頻則為MediaStore.Video.Media.EXTERNAL_CONTENT_URI; ContentResolver cr = this.getContentResolver(); Cursor cursor = cr.query(originalUri, null, null, null, null); if (cursor == null) { return; } for (cursor.moveToFirst();!cursor.isAfterLast(); cursor.moveToNext()) { long thumbNailsId = cursor.getLong(cursor .getColumnIndex("_ID")); Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, thumbNailsId, Video.Thumbnails.MICRO_KIND, null); //若為視頻則為 // Bitmap bitmap = MediaStore.Video.Thumbnails.getThumbnail(cr, // thumbNailsId, Video.Thumbnails.MICRO_KIND, null); return bitmap; }
『叄』 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
『肆』 Android獲取資料庫圖片uri路徑並用imageView顯示
通過流的形式就可以了。通過路徑得到文件流,然後使用bitmapfactory.decodeStream 方法 得到一個bitmap 然偶通過imageView.setImageBitmap()就ok了
『伍』 Android 保存圖片到本地。
這里只介紹按下「保存」後如何將一個Bitmap對象保存為圖片文件的執行步驟,對圖片的下載,圖片到Bitmap對象的轉換,Bitmap對象的格式轉換和壓縮,以及界面設計部分全部都忽略了。
確定存儲路徑
獲取外部存儲許可權
確定外部存儲狀態
確定文件名
保存到文件中
發送廣播,通知系統掃描保存後的文件
確定存儲路徑
在Android中文件存儲路徑包括內部存儲和外部存儲兩種類型。
對內部存儲,當一個app被安裝到手機後,Android系統會在內部存儲的/data/data/目錄下創建一個以包名稱命名的文件夾。例如/data/data/com.sohu.inputmethod.sogou/。一個應用對內部存儲的所有訪問都被限制在這個文件夾中,也就是說Android應用只能在該目錄中讀取,創建,修改文件。對該目錄之外的其他內部存儲中的目錄都沒有任何操作的許可權。因此,如果將圖片保存在內部存儲中,只能被應用自身讀取,其他應用均無法讀取。如果需要讓系統圖庫,相冊或其他應用能夠找到保存的圖片,必須將圖片保存到外部存儲中。
對外部存儲,當一個app被安裝到手機後,Android系統會在外部存儲的/Android/data/目錄下創建一個以包名命名的文件夾(這里第一個/不是根路徑,而是相對外部存儲所掛載路徑的相對路徑)。例如/storage/emulated/0/Android/data/com.sohu.inputmethod/。這個路徑同樣只能被應用自身讀取,其他應用不能訪問。因此,也不能將圖片保存在這個目錄中。
除外部存儲的/Android目錄之外的其他目錄一般都是可以被其他應用訪問的。目前,大多數應用都會在外部存儲的根路徑下建立一個類似包名的多層目錄,以存儲需要共享的文件。例如/storage/emulated/0/sogou/image/。還需要注意的是,很多查看圖片的應用都支持按照文件夾來查看圖片。如果將圖片所在的文件夾取名為image,photo之類的,就無法和其他文件夾區分開,用戶也不能識別該文件夾的用途。因此最好取一個有區分度的文件夾名字,例如網路貼吧就保存在/tieba目錄,微信是保存在/tencent/MicroMsg/WeiXin目錄。
由於Android系統的碎片化問題,不同設備上外部存儲的路徑很可能會不同,因此,不能直接使用/storage/emulated/0/作為外部存儲的根路徑。
Android SDK中 Environment類 提供了getExternalStorageDirectory()方法來獲取外部存儲的根路徑。示例如下:
[java]view plain
Stringdir=Environment.getExternalStorageDirectory().getAbsolutePath()+"/tencent/MicroMsg/WeiXin/"
需要注意的是Environment.getExternalStorageDirectory()返回的路徑中最後一個字元不是/,如果需要創建子目錄,需要在子目錄的前後都加上/。
獲取外部存儲許可權
由於需要在外部存儲中寫文件,需要在AndroidManifest.xml中增加如下的許可權聲明。
[java]view plain
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
確定外部存儲狀態
由於外部存儲需要被掛載,也可以被卸載,在寫入文件之前,需要先判斷外部存儲的狀態是否正常。只有狀態正常情況下才可以執行保存文件的操作。獲取外部存儲狀態同樣是通過Environment類,通過Environment.getExternalStorageState()可以得到一個字元串,來表示外部存儲的狀態。同時在Environment類中定義了一系列的String常量表示不同的狀態。在所有的狀態中只有內部存儲處於Environment.MEDIA_MOUNTED狀態時才可以讀寫文件,因此,需要將獲取到的狀態和Environment.MEDIA_MOUNTED做比較,如果不是Environment.MEDIA_MOUNTED狀態,就返回保存失敗。示例如下。
[java]view plain
//獲取內部存儲狀態
Stringstate=Environment.getExternalStorageState();
//如果狀態不是mounted,無法讀寫
if(!state.equals(Environment.MEDIA_MOUNTED)){
return;
}
確定文件名
保存的圖片文件名可以由應用根據自身需要自行確定,一般來說需要有一個命名規則,然後根據命名規則計算得到文件名。
這里列舉幾種常見的命名規則。
隨機命名
這種命名規則是隨機生成一個字元串或一組數字來對圖片命名。
字元串可以通過UUID來生成,數字可以通過Random()類來生成,例如:
[java]view plain
//通過UUID生成字元串文件名
StringfileName1=UUID.randomUUID().toString();
//通過Random()類生成數組命名
Randomrandom=newRandom();
StringfileName2=String.valueOf(random.nextInt(Integer.MAX_VALUE));
這種命名規則是按照數字從小到大的順序來對圖片命名。
在程序啟動時先獲取圖片文件名中當前最大數字的文件名,之後每保存一張圖片就將數字加1即可。
時間命名
這種命名規則是根據保存圖片的當前系統時間來對圖片命名。
系統時間可以通過System.currentTimeMillis()來獲取,不過System.currentTimeMillis()獲取到的時間是一個long型的整數,如果用它做文件名,無法通過文件名直接看出文件的具體保存時間。可以通過SimpleDateFormat先對當前時間做格式化,然後再將其作為文件名來使用。例如:
[java]view plain
使用這種命名規則來命名需要注意的是同一秒鍾可能會有多張圖片需要保存,在得到當前系統時間對應的文件名後,需要判斷該文件是否存在。如果文件已經存在,需要重新生成文件名。重新生成的文件名可以在之前的文件名後加上一個隨機數後綴,或者是用毫秒數做後綴。
Calendarnow=newGregorianCalendar();
SimpleDateFormatsimpleDate=newSimpleDateFormat("yyyyMMddHHmmss",Locale.getDefault());
StringfileName=simpleDate.format(now.getTime());
文件URL命名
每張網路圖片都有一個對應的圖片URL,可以根據圖片的URL來對圖片命名。
不過URL中會包含一些不能用作文件名的特殊字元,此外直接用URL來命名可能會帶來安全問題。為了避免這兩個問題,可以將圖片URL的MD5值作為文件名來使用。由於MD5是不可逆的,也就無法通過MD5值反向得到圖片URL,同時MD5值對應的字元串只包含[0-9A-Z],不包含特殊字元,可是作為文件名使用。
由於每張圖片的URL是唯一的,其對應的文件名也就是唯一的。如果需要每張網路圖片只能生成一個文件,不允許保存為多份拷貝,可以用這種命名規則。在得到URL對應的文件名後,先判斷文件是否已經存在,如果已經存在,直接覆蓋或不處理。
保存到文件中
保存圖片文件時,通過Bitmap的compress()方法將Bitmap對象壓縮到一個文件輸出流中,然後flush()即可。示例如下。
[java]view plain
try{
Filefile=newFile(dir+fileName+".jpg");
FileOutputStreamout=newFileOutputStream(file);
mBitmap.compress(Bitmap.CompressFormat.JPEG,100,out);
out.flush();
out.close();
}catch(Exceptione){
e.printStackTrace();
}
發送廣播,通知系統掃描保存後的文件
至此,已經實現將Bitmap對象保存成外部存儲中的一個jpg格式的文件。但此時該文件只是保存在外部存儲的一個目錄中,必須進入其所在的目錄中才可以看到。在系統圖庫,相冊和其他應用中無法看到新建的圖片文件。為了讓其他應用能夠知道圖片文件被創建,必須通知MediaProvider服務將新建的文件添加到圖片資料庫中。
Android系統中常駐一個MediaProvider服務,對應的進程名為android.process.media,此服務用來管理本機上的媒體文件,提供媒體管理服務。在系統開機或者收到外部存儲的掛載消息後,MediaProvider會調用MediaScanner,MediaScanner會掃描外部存儲中的所有文件,根據文件類型的後綴將文件信息保存到對應的資料庫中,供其他APP使用。
MediaScannerReceiver是一個廣播接收者,當它接收到特定的廣播請求後,就會去掃描指定的文件,並根據文件信息將其添加到資料庫中。當圖片文件被創建後,就可以發送廣播給MediaScannerReceiver,通知其掃描新建的圖片文件。示例如下。
[java]view plain
try{
Filefile=newFile(dir+fileName+".jpg");
FileOutputStreamout=newFileOutputStream(file);
mBitmap.compress(Bitmap.CompressFormat.JPEG,100,out);
out.flush();
out.close();
//保存圖片後發送廣播通知更新資料庫
Uriuri=Uri.fromFile(file);
sendBroadcast(newIntent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));
}catch(Exceptione){
e.printStackTrace();
}
圖片的非同步保存
保存圖片文件時,如果圖片很大,或需要同時保存多張圖片時,就需要較多的時間。為了避免阻塞UI線程,出現幀率下降或ANR,通常需要將圖片保存操作放到線程中去執行。當圖片保存完畢後通過sendMessage()方法通知UI線程保存結果。
將圖片保存放到後台線程去執行需要增加一些同步機制避免一些多線程問題。例如有兩張圖片需要保存,分別放到兩個線程中去執行,保存圖片時文件名以數字順序增加。第一個線程選中文件名為125.jpg,但此時文件還未創建,第二個線程判斷125.jpg不存在,於是也選取125.jpg作為文件名,兩張圖片就保存到同一個文件中了。
『陸』 【Android開發】怎麼在ListView中做一個圖片批量上傳的隊列
先是兩個layout:
1、main.xml
復制代碼
復制代碼
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent">
6 <ListView
7 android:layout_width="fill_parent"
8 android:layout_height="fill_parent"
9 android:focusable="false"
10 android:id="@+id/lvImageList" >
11 </ListView>
12 </LinearLayout>
復制代碼
復制代碼
2、listitem.xml
復制代碼
復制代碼
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="horizontal"
4 android:layout_width="fill_parent"
5 android:layout_height="?android:attr/listPreferredItemHeight">
6 <ImageView
7 android:id="@+id/itemImgImageInfo"
8 android:layout_marginTop="4dip"
9 android:layout_marginBottom="4dip"
10 android:layout_width="?android:attr/listPreferredItemHeight"
11 android:layout_height="?android:attr/listPreferredItemHeight">
12 </ImageView>
13 <TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
14 android:layout_width="fill_parent"
15 android:layout_height="fill_parent"
16 android:paddingLeft="4dip"
17 android:mode="twoLine">
18 <CheckedTextView
19 android:id="@+id/itemChkImageInfo"
20 android:layout_width="fill_parent"
21 android:layout_height="wrap_content"
22 android:gravity="center_vertical"
23 android:textAppearance="?android:attr/textAppearanceSmall"
24 android:checkMark="?android:attr/listChoiceIndicatorMultiple">
25 </CheckedTextView>
26 <TextView
27 android:id="@+id/itemTxtImageInfo"
28 android:layout_width="fill_parent"
29 android:layout_height="wrap_content"
30 android:gravity="center_vertical|top"
31 android:layout_marginBottom="4dip"
32 android:layout_below="@+id/itemChkImageInfo"
33 android:textAppearance="?android:attr/textAppearanceSmall">
34 </TextView>
35 </TwoLineListItem>
36 </LinearLayout>
復制代碼
復制代碼
接著是代碼:
復制代碼
復制代碼
1 package com.android.MultipleChoiceImageList;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import android.app.Activity;
9 import android.content.Context;
10 import android.database.Cursor;
11 import android.graphics.Bitmap;
12 import android.net.Uri;
13 import android.os.Bundle;
14 import android.provider.MediaStore;
15 import android.provider.MediaStore.Images;
16 import android.view.LayoutInflater;
17 import android.view.View;
18 import android.view.ViewGroup;
19 import android.widget.AdapterView;
20 import android.widget.CheckedTextView;
21 import android.widget.ImageView;
22 import android.widget.ListView;
23 import android.widget.SimpleAdapter;
24 import android.widget.TextView;
25 import android.widget.AdapterView.OnItemClickListener;
26
27 public class MainActivity extends Activity {
28
29 private ListView lvImageList;
30
31 private String imageID= "imageID";
32 private String imageName = "imageName";
33 private String imageInfo = "imageInfo";
34
35 private ArrayList<String> fileNames = new ArrayList<String>();
36
37 private mAdapter;
38
39 /** Called when the activity is first created. */
40 @Override
41 public void onCreate(Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.main);
44
45 lvImageList=(ListView) this.findViewById(R.id.lvImageList);
46 lvImageList.setItemsCanFocus(false);
47 lvImageList.setOnItemClickListener(new OnItemClickListener() {
48 @Override
49 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
50
51 CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.itemChkImageInfo);
52 checkedTextView.toggle();
53 mAdapter.setCheckItem(position, checkedTextView.isChecked());
54 }
55 });
56 try{
57 String[] from = {imageID, imageName, imageInfo};
58 int[] to = {R.id.itemImgImageInfo, R.id.itemChkImageInfo, R.id.itemTxtImageInfo};
59 mAdapter = new (MainActivity.this, GetImageList(), R.layout.listitem, from, to);
60 lvImageList.setAdapter(mAdapter);
61 }
62 catch(Exception ex){
63 return;
64 }
65 }
66
67 //獲取圖片列表
68 private ArrayList<Map<String, String>> GetImageList(){
69
70 ArrayList<Map<String, String>> imageList = new ArrayList<Map<String,String>>();
71 HashMap<String, String> imageMap;
72
73 //讀取SD卡中所有圖片
74 Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
75 String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME,MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE};
76 String selection = MediaStore.Images.Media.MIME_TYPE + "=?";
77 String[] selectionArg ={"image/jpeg"};
78 Cursor mCursor = this.managedQuery(uri, projection, selection, selectionArg, MediaStore.Images.Media.DISPLAY_NAME);
79 imageList.clear();
80 if (mCursor != null) {
81 mCursor.moveToFirst();
82 while (mCursor.getPosition() != mCursor.getCount())
83 {
84 imageMap= new HashMap<String, String>();
85 imageMap.put(imageID, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media._ID)));
86 imageMap.put(imageName, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)));
87 imageMap.put(imageInfo, " " + (mCursor.getLong(mCursor.getColumnIndex(MediaStore.Images.Media.SIZE))/1024)+"KB");
88 imageList.add(imageMap);
89 fileNames.add(mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)));
90 mCursor.moveToNext();
91 }
92 mCursor.close();
93 }
94 return imageList;
95 }
96
97 //可多選圖片列表適配器
98 class extends SimpleAdapter {
99
100 private Map<Integer, Boolean> map;
101 private List<Integer> state;
102 private List<? extends Map<String, ?>> mList;
103
104 LayoutInflater mInflater;
105
106 public (Context context, List<Map<String, String>> data, int resource, String[] from, int[] to) {
107 super(context, data, resource, from, to);
108 map = new HashMap<Integer, Boolean>();
109 mInflater = LayoutInflater.from(context);
110 mList = data;
111 for(int i = 0; i < data.size(); i++) {
112 map.put(i, false);
113 }
114 state = new ArrayList<Integer>();
115 }
116
117 @Override
118 public int getCount() {
119 return mList.size();
120 }
121
122 @Override
123 public Object getItem(int position) {
124 return position;
125 }
126
127 @Override
128 public long getItemId(int position) {
129 return position;
130 }
131
132 //設置條目選中狀態
133 public void setCheckItem(int position, Boolean isChecked){
134 map.put(position, isChecked);
135 if (state.contains(position))
136 state.remove((Object)position);
137 if (isChecked){
138 state.add(position);
139 }
140 }
141
142 //獲取列表中已選中條目
143 public long[] getCheckItemIds(){
144 int count = state.size();
145 long[] ids = new long[count];
146 for (int i = 0; i < count; i++) {
147 ids[i]= (long)state.get(i);
148 }
149 return ids;
150 }
151
152 @Override
153 public View getView(int position, View convertView, ViewGroup parent) {
154 if(convertView == null) {
155 convertView = mInflater.inflate(R.layout.listitem, null);
156 }
157
158 CheckedTextView checkedTextView = (CheckedTextView) convertView.findViewById(R.id.itemChkImageInfo);
159 checkedTextView.setChecked(map.get(position));
160 checkedTextView.setText((String)mList.get(position).get(imageName));
161
162 TextView textView = (TextView) convertView.findViewById(R.id.itemTxtImageInfo);
163 textView.setText((String)mList.get(position).get(imageInfo));
164
165 //顯示圖片縮略圖
166 ImageView image = (ImageView) convertView.findViewById(R.id.itemImgImageInfo);
167 Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong((String)mList.get(position).get(imageID)), Images.Thumbnails.MICRO_KIND, null);
168 image.setImageBitmap(bm);
169
170 return convertView;
171 }
172 }
173 }
『柒』 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);