2011-10-03 86 views
0

我想從圖庫中獲取圖片(如果存在),而無需用戶從圖庫中選擇圖片。我想以編程方式做到這一點。我試過下面的方法:Android:無需用戶交互從圖庫中獲取圖像

String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = new Activity().managedQuery(MediaStore.Images.Media.INTERNAL_CONTENT_URI, projection, null, null, null); 
      if (cursor != null) { 
       // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL 
       // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA 
       int column_index = cursor 
         .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       BitmapFactory.Options options = new BitmapFactory.Options();; 
       options.inSampleSize = 1; 
       Bitmap bm = BitmapFactory.decodeFile(
         cursor.getString(column_index),options); 
       remoteView.setImageViewBitmap(R.id.image,bm); 

我叫從工作線程而不是主UI線程這段代碼。這種方法是否正確?如果沒有,那麼在沒有用戶交互的情況下從圖庫中獲取圖像的更好方法是什麼?

謝謝。

+0

爲什麼你關心這種方法?它不工作? – spatulamania

+0

是的,它不是!錯誤是:java.lang.RuntimeException:無法在未調用Looper.prepare()的線程內創建處理程序。 – GamDroid

回答

1

我認爲這個問題有兩個部分:從手機庫中獲取圖像並更新UI。

看來你的方法是正確的從圖庫中獲取圖像。另一種方法詳述如下:http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

您看到的RuntimeException是因爲您正在嘗試更新工作線程上的UI。 Android框架需要在UI線程上發生所有UI更改。運行查詢更新UI後,您必須致電Activity.runOnUiThread()