2012-11-15 11 views
8

मैं कैमरे से एक छवि कैप्चर करना चाहता हूं और इसे निजी ऐप कैश निर्देशिका में सहेजना चाहता हूं। मुझे एहसास है कि मुझे अपनी निजी निर्देशिका में लिखने के लिए कैमरा ऐप अनुमति देना है, इसलिए मैंने FLAG_GRANT_WRITE_URI_PERMISSION ध्वज जोड़ा।कैमरे से निजी ऐप कैश निर्देशिका में स्टोर छवि

क्या हो रहा है, कैमरा ऐप खुलता है, मैं तस्वीर ले सकता हूं, लेकिन जब मैं ठीक बटन पर क्लिक करता हूं, तो कुछ भी नहीं होता है। कैमरा ऐप खुला रहता है। कोई लॉग आउटपुट नहीं। मुझे लगता है कि यह एक अनुमति समस्या के कारण है।

private void getCameraImage() { 
    try { 
     mTmpFile = File.createTempFile("tmp", ".jpg", getCacheDir()); 
     Uri imgUri = Uri.fromFile(mTmpFile); 
     Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     i.putExtra(MediaStore.EXTRA_OUTPUT, imgUri); 
     i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
     // i.setData(imgUri); // if uncommented, i get an ActivityNotFound Exception 
     startActivityForResult(i, REQUEST_CAMERA); 
    } catch (IOException e) { 
     Log.e(TAG, "getCameraImage()", e); 
     Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); 
    } 
} 

किसी भी अंतर्दृष्टि, पर मैं कैसे, जिसे ठीक कर सकता है?

संपादित करें:

जब मैं सार्वजनिक एसडी कार्ड के लिए निर्देशिका बदलने के लिए, तो यह ठीक काम करता है।

mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory()); 

धन्यवाद साइमन

+1

यदि यह अनुमति समस्या थी, तो लॉगकैट में एक त्रुटि दिखाई देगी। – PearsonArtPhoto

+0

इसके बारे में निश्चित नहीं है। यहां तक ​​कि जब मैं FLAG_GRANT_WRITE_URI_PERMISSION ध्वज को हटाता हूं, मुझे कोई लॉग आउटपुट नहीं मिलता है। हो सकता है कि कैमरा ऐप अनुमति की जांच करे, और अगर वह फ़ाइल नहीं लिख सकता है तो बस कार्रवाई को रोक देता है। – SimonSays

उत्तर

2
इसके बजाय उरी गुजर चित्र आप http://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera उपयोग कर सकते हैं स्टोर करने के लिए की

। पिक्चर कॉलबैक)

और अपनी ऐप मेमोरी में सामग्री प्राप्त करें। वहां से आप जो कुछ भी चाहते हैं वह कर पाएंगे।

यह न भूलें कि कैमरा एप्लिकेशन गैलरी का उपयोग कर रहे हैं और गैलरी ऐप को आपकी निजी निर्देशिका की जांच करने की अनुमति नहीं है।

+0

ठीक है, यह तस्वीर को प्राप्त करने का एक बहुत ही अलग तरीका है जिसे मैं चाहता हूं। यह वास्तव में मूल प्रश्न का उत्तर नहीं है, लेकिन फिर भी समस्या का समाधान हो सकता है। चूंकि मैं अब उस ऐप पर काम नहीं कर रहा हूं और इसलिए समाधान का परीक्षण नहीं कर सकता, इसलिए मैं आगे बढ़ जाऊंगा और जवाब स्वीकार करूंगा - यह वही है :-) – SimonSays

+0

प्रशंसा के लिए बहुत बहुत धन्यवाद और हाँ प्रत्यक्ष नहीं है आपके प्रश्न का उत्तर दें, लेकिन जैसा कि आपने कहा है वह ऐसा करने की एकमात्र संभावना है जो केवल आपके ऐप पर "संबंधित" है और मीडिया का उपयोग करने वाले किसी अन्य व्यक्ति के लिए नहीं। मैंने अपने आप से इस विधि का उपयोग किया ... धन्यवाद – danysz

+0

यह समाधान एपीआई 21 में बहिष्कृत किया गया था –

संबंधित मुद्दे