我正在創建一個應用程序,我想在其中捕獲圖像,然后我想將該圖像作為附件發送到電子郵件中。我正在使用android.provider.MediaStore.ACTION_IMAGE_CAPTUREintent動作打開相機,我將文件的Uri作為參數EXTRA_OUTPUT傳遞給圖像以將圖像恢復到文件中。這是完美的工作,如果我使用external storage urias作為a 我能夠獲取捕獲的圖像, EXTRA_OUTPUT但如果我使用數據文件夾uri它不工作,相機沒有關閉,它的所有按鈕都不工作。這是我在外部存儲目錄中獲取結果的代碼Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);File out = Environment.getExternalStorageDirectory();out = new File(out, imagename);i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));startActivityForResult(i, CAMERA_RESULT);此代碼用于獲取數據文件夾中的圖像Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);File out = getFilesDir();out = new File(out, MyPharmacyOptions.PRESCRIPTION_IMAGE_NAME);i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));startActivityForResult(i, CAMERA_RESULT);我知道第三個應用程序無法訪問數據文件夾,因此可能會導致問題,因此我創建了一個內容提供程序來共享該文件。Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);Uri uri = MyContentProvider.CONTENT_URI;uri = Uri.withAppendedPath(uri, imagename);getContentResolver().insert(uri, null);getContentResolver().notifyChange(RingtonContentProvider.CONTENT_URI, null);Log.d(Tag, uri.toString());i.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(i, CAMERA_RESULT);現在如果我傳遞其他外部存儲目錄的網址,相機正在打開,但它沒有在模擬器中關閉,但在設備中相機將關閉,但我沒有得到結果。我已在清單文件中聲明了此內容<providerandroid:name=".contentproviders.MyContentProvider"android:authorities="x.y.z" />此外,我已經允許寫入外部存儲器以及使用相機。我能夠使用外部存儲捕獲圖像但我想將圖像存儲在數據目錄而不是外部存儲中,因為如果外部存儲不可用我想捕獲圖像并想要發送郵件。如果我創建內容提供,那么我也可以將我的圖像共享到電子郵件應用程序。如果我們不提供相機意圖的附加功能,它會將圖像作為活動結果中的byte []返回為額外的數據,但這是為了縮略圖的目的,所以我無法使用這種方式獲得高分辨率圖像。
- 3 回答
- 0 關注
- 432 瀏覽
添加回答
舉報
0/150
提交
取消
