Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Erro ao abrir a câmera

Tentar abrir a câmera a app crasha. Segue o stacktrace:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.mailo.agenda, PID: 7318
                  android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.mailo.agenda/files/foto.jpg exposed beyond app through ClipData.Item.getUri()
                      at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
                      at android.net.Uri.checkFileUriExposed(Uri.java:2348)
                      at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941)
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:9735)
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:9720)
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1609)
                      at android.app.Activity.startActivityForResult(Activity.java:4472)
                      at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
                      at android.app.Activity.startActivityForResult(Activity.java:4430)
                      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
                      at android.app.Activity.startActivity(Activity.java:4791)
                      at android.app.Activity.startActivity(Activity.java:4759)
                      at com.mailo.agenda.FormularioActivity$1.onClick(FormularioActivity.java:45)
                      at android.view.View.performClick(View.java:6256)
                      at android.view.View$PerformClick.run(View.java:24701)
                      at android.os.Handler.handleCallback(Handler.java:789)
                      at android.os.Handler.dispatchMessage(Handler.java:98)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6541)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Application terminated.

Ao pesquisar mais sobre o erro, descobri que o problema é a versão da api. Realizei testar com uma versão inferior à 24 e funcionou. Segundo o stackoverfow(https://stackoverflow.com/questions/38200282/android-os-fileuriexposedexception-file-storage-emulated-0-test-txt-exposed) deve-se mudar o file:// para content://. Alguém pode me auxiliar?

8 respostas

Olá Mailon!

Não sei se o problema já foi solucionado, mas tente verificar as permissões do seu app no arquivo Manifest.

Para utilizar a câmera em um aplicativo, é necessário "pedir permissão" para o usuário. O que deve ser declarado no Manifest é algo nesse sentido:

<uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.camera.autofocus" />

Espero ter ajudado!

Bons estudos!

Além disso, ainda adicionei o pedido de permissão ao clicar no botão foto com

if (ActivityCompat.checkSelfPermission(FormularioActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(FormularioActivity.this, new String[]{Manifest.permission.CAMERA}, 111);
} else {
    ...
}

mas mesmo assim ainda tem o mesmo erro.

Tenho o mesmo problema, quando solucionar poderia me dizer?

Tentei isso aqui e não funcionou

Algum instrutor poderia responder? Não consigo continuar o curso por causa disso.

Se quiser me passar algum contato posso tentar lhe auxiliar

Skype: matgsan.private