我嘗試運行監護人項目的相機密碼,但是當我按下一個按鈕,它得到了強制關閉。 這是我的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();
}
}
我看到了,但它並沒有幫助我! :( – zeinab
打開'CameraBaseActivity.java',找到'tryCreateCamera'(第222行)的方法。你可以通過點擊你的日誌的正確位置來打開它。IDE – DeKaNszn