2017-07-26 48 views
-2

我嘗試運行監護人項目的相機密碼,但是當我按下一個按鈕,它得到了強制關閉。 這是我的logcat的文件:java.lang.IndexOutOfBoundsException:無效指數5,大小爲4

六月7日至26日:49:02.639 27157-27157/info.guardianproject.iocipher.camera E/AndroidRuntime:致命異常:主 過程:info.guardianproject。 iocipher.camera,PID:27157 java.lang.RuntimeException:無法恢復活動 {info.guardianproject.iocipher.camera/info.guardianproject.iocipher.camera.StillCameraActivity}: java.lang.IndexOutOfBoundsException:索引5無效,大小爲4 在 android.app.ActivityThread.per formResumeActivity(ActivityThread.java:2774) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238) 在android.app.ActivityThread。訪問$ 800(ActivityThread.java:135) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os。 Looper.loop(Looper.java:136) 在android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) 由於:java.lang.IndexOutOfBoundsException:Invalid索引5,大小 是4 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayLi st.java:308) 在 info.guardianproject.iocipher.camera.CameraBaseActivity.tryCreateCamera(CameraBaseActivity.java:222) 在 info.guardianproject.iocipher.camera.CameraBaseActivity.initCamera(CameraBaseActivity.java:180) 在 info.guardianproject.iocipher.camera.CameraBaseActivity.onResume(CameraBaseActivity.java:174) 在 info.guardianproject.iocipher.camera.StillCameraActivity.onResume(StillCameraActivity.java:107) 在 android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1192) 在android.app.Acti vity.performResume(Activity.java:5310) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:2764) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803) 在 android.app .ActivityThread.handleLaunchActivity(ActivityThread.java:2238) 在android.app.ActivityThread.access $ 800(ActivityThread.java:135) 在 android.app。在android.app.android.os.Looper.loop(Looper.java:136) 處的android.os.Handler.dispatchMessage(Handler.java:102) 處的ActivityThread $ H.handleMessage(ActivityThread.java:1196) 。 ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android。 internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native法)

,這是我stillcamera.java文件:

public class StillCameraActivity extends CameraBaseActivity { 

    private String mFileBasePath = null; 

    private boolean isRequest = false; 
    private ArrayList<String> mResultList = null; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mFileBasePath = getIntent().getStringExtra("basepath"); 

     isRequest = getIntent().getAction() != null && getIntent().getAction().equals(MediaStore.ACTION_IMAGE_CAPTURE); 
     mResultList = new ArrayList<String>(); 

     button.setBackgroundResource(R.drawable.ic_action_camera); 
     buttonSelfie.setBackgroundResource(R.drawable.ic_action_switch_camera); 
    } 

    @Override 
    public void onPictureTaken(final byte[] data, Camera camera) {  
     File fileSecurePicture; 
     try { 

      if (overlayView != null) 
       overlayView.setBackgroundResource(R.color.flash); 

      long mTime = System.currentTimeMillis(); 
      fileSecurePicture = new File(mFileBasePath,"secure_image_" + mTime + ".jpg"); 

      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(fileSecurePicture)); 
      out.write(data); 
      out.flush(); 
      out.close(); 

      mResultList.add(fileSecurePicture.getAbsolutePath()); 

      Intent intent = new Intent("new-media"); 
       // You can also include some extra data. 
       intent.putExtra("media", fileSecurePicture.getAbsolutePath()); 
       LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 

      Intent intentResult = new Intent().putExtra(MediaStore.EXTRA_OUTPUT, mResultList.toArray(new String[mResultList.size()]));   
      setResult(Activity.RESULT_OK, intentResult); 

      view.postDelayed(new Runnable() 
      { 
       @Override 
       public void run() { 
        overlayView.setBackgroundColor(Color.TRANSPARENT); 

        resumePreview(); 
       } 
      },100); 


     } catch (Exception e) { 
      e.printStackTrace(); 
      setResult(Activity.RESULT_CANCELED); 

     } 

    } 

    @Override 
    public void onPause() { 

     super.onPause(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
    } 
} 
  
+0

我看到了,但它並沒有幫助我! :( – zeinab

+0

打開'CameraBaseActivity.java',找到'tryCreateCamera'(第222行)的方法。你可以通過點擊你的日誌的正確位置來打開它。IDE – DeKaNszn

回答

0

更改此

Intent intentResult = new Intent().putExtra(MediaStore.EXTRA_OUTPUT, mResultList.toArray(new String[mResultList.size()]));   
      setResult(Activity.RESULT_OK, intentResult); 

Intent intentResult = new Intent().putExtra(MediaStore.EXTRA_OUTPUT, mResultList.toArray(new String[mResultList.size() - 1]));   
      setResult(Activity.RESULT_OK, intentResult); 
+1

列表大小是5,它從zerp開始,所以你必須在你的代碼中設置,新的String [mResultList.size() - 1] – AbuQauod

+0

我做到了,但它沒有工作!! :( – zeinab

相關問題