2012-10-10 26 views
8

我有一個完全正常工作的應用程序。它只有1我的相機意圖或權限問題。按下確定按鈕後,Android相機的活動不會返回到我的應用程序

應用程序應該在用戶按下按鈕時啓動相機活動。這工作正常,但是當用戶通過單擊相機上的確定按鈕來接受圖片時,它不會回到我的應用程序。如果他們按下相機上的取消按鈕,它會按預期回到我的應用程序。

我已經閱讀了所有在這裏可以找到的類似問題,但他們都沒有解決我的問題。我需要告訴相機到底在哪裏保存圖像,因爲我想在我的應用程序之間切換2。下面是一個創建相機意向,並開始它的代碼:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath)); 
startActivityForResult(intent, 11); 

我已經嘗試了多個值imagePath(這是一個字符串),但相機的OK鍵還沒有與任何人合作。這是我試過的路徑:

/mnt/sdcard/<appName>/cameraImages/image1.jpg 
from Environment.getExternalStorageDirectory() 

/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg 
from context.getExternalCacheDir() 

/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg 
from context.getCacheDir() 

我在清單文件以下權限:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.flash" android:required="false" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

你們能幫我找出什麼是錯我的代碼,或告訴我什麼一個有效的路徑可能是?我更喜歡將圖像存儲在緩存位置,因爲在用戶離開應用程序後圖像不會持續存在並不重要,但我並不在乎誰能夠訪問圖像。

我正在4.1模擬器上進行所有測試,使用4.1 SDK編譯,我的最低版本是API 8(2.2)。

我已經在onActivityResult()中提出了一個意向案例,但我認爲你們不需要看到那些代碼,因爲它不應該影響問題。

+0

檢查真實設備一次。 &也檢查[this](http://stackoverflow.com/a/7224771/646806) – RobinHood

+0

是否調用了'onActivityResult()'?你能看到日誌中的任何東西嗎? –

+0

有人使用'context.getCacheDir()'爲'imagePath'檢查了應用程序的版本,他們有完全相同的體驗;相機應用程序中的確定按鈕不適用於他們。另外,當按下OK按鈕時,不會調用onActivityResult()。 – cmasupra

回答

2

我能弄清楚這個問題。似乎不是使用Uri.parse(imagePath),而是在添加額外內容時使用Uri.fromFile(new File(imagePath))。我已經將下面的新代碼放在了一起,以防止出現同樣問題的任何人。

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath))); 
startActivityForResult(intent, 11); 

我現在成功地利用context.getExternalCacheDir()創建的完整路徑imagePath。我創建的結果路徑是/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg

+0

我正在使用Uri.fromFile(新文件(imagePath)),但仍然有同樣的問題...你可以啓發我在這個問題..plz你的幫助非常感謝。 –

+0

@NilayOnAndroid確保'imagePath'變量是您的應用程序有權訪問的有效路徑。 – cmasupra

+1

@ cmasupra - 事實證明,我需要mkdirs()首先創建該路徑!但感謝您的幫助! –

相關問題