2017-08-17 7 views
-2

カメラから画像を高品質で保存する必要があります。私はこのメソッドを見つけましたが、API 24では機能しません。何が問題なのですか?私が見logcatになぜそれはandroid 4.4(API 19)では動作しますが、7/0(API 24)では動作しませんか?カメラから画像を取得する

File imgFile = new File(pictureImagePath); 
      if(imgFile.exists()) 
       bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

:onActivityResult無効に保護

String timeStamp = new SimpleDateFormat("HH:mm:ss").format(new Date()); 
      String imageFileName = timeStamp + ".jpg"; 
      File storageDir = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES); 
      pictureImagePath = storageDir.getAbsolutePath() + "/" + imageFileName; 
      File file = new File(pictureImagePath); 
      Uri outputFileUri = Uri.fromFile(file); 
      intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
      startActivityForResult(intent, CAM_REQUEST) 

Could not execute method for android:onClick 
08-17 22:23:51.934 2003-2003/? E/Zygote: v2 
08-17 22:23:51.934 2003-2003/? I/libpersona: KNOX_SDCARD checking this for 10239 
08-17 22:23:51.934 2003-2003/? I/libpersona: KNOX_SDCARD not a persona 
08-17 22:23:51.936 2003-2003/? E/Zygote: accessInfo : 0 
08-17 22:23:51.936 2003-2003/? W/SELinux: SELinux selinux_android_compute_policy_index : Policy Index[2], Con:u:r:zygote:s0 RAM:SEPF_SECMOBILE_7.0_0005, [-1 -1 -4 -1 0 1] 
08-17 22:23:51.938 2003-2003/? I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, level=s0:c512,c768, pkgname=com.anhafiz.imagescanner 
08-17 22:23:51.941 2003-2003/? I/art: Late-enabling -Xcheck:jni 
08-17 22:23:51.958 2003-2003/? D/TimaKeyStoreProvider: TimaKeyStore is enabled: try add TimaSignature Service and generateKeyPair Service 
08-17 22:23:52.181 2003-2003/com.anhafiz.imagescanner W/System: ClassLoader referenced unknown path: /data/app/com.anhafiz.imagescanner-2/lib/arm 
08-17 22:23:52.203 2003-2003/com.anhafiz.imagescanner I/InstantRun: starting instant run server: is main process 
08-17 22:23:52.284 2003-2003/com.anhafiz.imagescanner W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
08-17 22:23:52.388 2003-2003/com.anhafiz.imagescanner D/AbsListView: Get MotionRecognitionManager 
08-17 22:23:52.391 2003-2003/com.anhafiz.imagescanner D/MotionRecognitionManager: mSContextService = null 
08-17 22:23:52.393 2003-2003/com.anhafiz.imagescanner D/MotionRecognitionManager: motionService = c[email protected]6ae5181 
08-17 22:23:52.425 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: ThreadedRenderer.create() translucent=false 
08-17 22:23:52.428 2003-2003/com.anhafiz.imagescanner D/InputTransport: Input channel constructed: fd=73 
08-17 22:23:52.428 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: setView = [email protected][MainActivity] touchMode=true 
08-17 22:23:52.444 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: dispatchAttachedToWindow 
08-17 22:23:52.455 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: Relayout returned: oldFrame=[0,0][0,0] newFrame=[0,0][1536,2048] result=0x7 surface={isValid=true -1564385280} surfaceGenerationChanged=true 
08-17 22:23:52.456 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: mHardwareRenderer.initialize() mSurface={isValid=true -1564385280} hwInitialized=true 
08-17 22:23:52.462 2003-2032/com.anhafiz.imagescanner I/OpenGLRenderer: Initialized EGL, version 1.4 
08-17 22:23:52.462 2003-2032/com.anhafiz.imagescanner D/OpenGLRenderer: Swap behavior 1 
08-17 22:23:52.466 2003-2032/com.anhafiz.imagescanner D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000, [1536x2048]-format:1 
08-17 22:23:52.482 2003-2003/com.anhafiz.imagescanner W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView 
08-17 22:23:52.501 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: MSG_RESIZED_REPORT: frame=Rect(0, 0 - 1536, 2048) ci=Rect(0, 48 - 0, 0) vi=Rect(0, 48 - 0, 0) or=1 
08-17 22:23:52.501 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 
08-17 22:23:52.501 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: mHardwareRenderer.initializeIfNeeded()#2 mSurface={isValid=true -1564385280} 
08-17 22:23:52.502 2003-2003/com.anhafiz.imagescanner V/InputMethodManager: Starting input: [email protected] nm : com.anhafiz.imagescanner ic=null 
08-17 22:23:52.502 2003-2003/com.anhafiz.imagescanner I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus 
08-17 22:23:52.507 2003-2017/com.anhafiz.imagescanner D/InputTransport: Input channel constructed: fd=79 
08-17 22:23:52.565 2003-2003/com.anhafiz.imagescanner V/InputMethodManager: Starting input: [email protected] nm : com.anhafiz.imagescanner ic=null 
08-17 22:23:54.174 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: ViewPostImeInputStage processPointer 0 
08-17 22:23:54.175 2003-2003/com.anhafiz.imagescanner W/System: ClassLoader referenced unknown path: /system/framework/QPerformance.jar 
08-17 22:23:54.176 2003-2003/com.anhafiz.imagescanner E/BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]] 
08-17 22:23:54.176 2003-2003/com.anhafiz.imagescanner V/BoostFramework: BoostFramework() : mPerf = null 
08-17 22:23:54.271 2003-2003/com.anhafiz.imagescanner D/[email protected][MainActivity]: ViewPostImeInputStage processPointer 1 
08-17 22:23:54.284 2003-2003/com.anhafiz.imagescanner D/AndroidRuntime: Shutting down VM 
08-17 22:23:54.294 2003-2003/com.anhafiz.imagescanner E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.anhafiz.imagescanner, PID: 2003 
                     java.lang.IllegalStateException: Could not execute method for android:onClick 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                      at android.view.View.performClick(View.java:6257) 
                      at android.widget.TextView.performClick(TextView.java:11149) 
                      at android.view.View$PerformClick.run(View.java:23705) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6776) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
                     Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:6257)  
                      at android.widget.TextView.performClick(TextView.java:11149)  
                      at android.view.View$PerformClick.run(View.java:23705)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6776)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)  
                     Caused by: android.os.FileUriExposedException: file:///storage/emulated/0/Pictures/22%3A23%3A54.jpg exposed beyond app through ClipData.Item.getUri() 
                      at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799) 
                      at android.net.Uri.checkFileUriExposed(Uri.java:2346) 
                      at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832) 
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:9514) 
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:9499) 
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1525) 
                      at android.app.Activity.startActivityForResult(Activity.java:4403) 
                      at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:54) 
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75) 
                      at android.app.Activity.startActivityForResult(Activity.java:4362) 
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:708) 
                      at com.anhafiz.imagescanner.MainActivity.takePhoto(MainActivity.java:58) 
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
                      at android.view.View.performClick(View.java:6257)  
                      at android.widget.TextView.performClick(TextView.java:11149)  
                      at android.view.View$PerformClick.run(View.java:23705)  
                      at android.os.Handler.handleCallback(Handler.java:751)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6776)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)  
+3

StackTraceを追加できますか? – creativecreatorormaybenot

+2

外部ストレージに必要な権限を追加しましたか?バージョンM以上の実行時アクセス許可を確認する必要があります。 API 19には実行時のアクセス権は必要ありません。 – Swati

+1

https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it and https://stackoverflow.com/questions/38200282/android-os-fileuriexposedexception -file-storage-emulated-0-test-txt-exposedは、2つの可能性のある問題です。 – CommonsWare

答えて

1

事はアンドロイドでは道URIを変更しましたが、API 24以上の異なるアプリケーション間で共有されています。あなたのケースでは、あなたはカメラアプリとuriを共有しています。 FileProvideクラスを実装して、他のアプリケーションにURIを使用する許可を与えなければなりません。

this questionとその回答をより明確にする必要があります。

+0

ありがとう!私はすぐにそれを試してみる – user8371023

関連する問題