J'utilise API 26. Je veux ouvrir la caméra après qu'un utilisateur clique sur un bouton. J'ai le bouton et son identifiant est CAMERA. J'appelle la méthode openCamera
quand un bouton est tapé.Ouvrir la caméra en cliquant sur un bouton, l'application se bloque
public void openCamera(View v){
if(v.getId() == R.id.CAMERA) {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent,0);
}
}
Cette méthode est dans la classe MainActivity, mais le bouton est lui-même dans sa propre classe appelée « Créer »
// Create class
public class Create extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create);
}
}
Je ne vois pas ce que je fais mal puisque la méthode devrait fonctionner et est lié au bouton.
Exception Stack Trace:
5906-5906/com.gif.gif E/AndroidRuntime: FATAL EXCEPTION: main Process: com.gif.gif, PID: 5906
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.view.View$DeclaredOnClickListener.onClick(View.java:5336)
at android.view.View.performClick(View.java:6256)
.
.
.
.
Caused by: java.lang.SecurityException: Permission Denial: starting Intent {
act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera2/com.android.camera.CaptureActivity
} from ProcessRecord{5ce0ad0 5906:com.gif.gif/u0a84} (pid=5906, uid=10084)
with revoked permission android.permission.CAMERA
at android.os.Parcel.readException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1888)
at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4365)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1610)
at android.app.Activity.startActivityForResult(Activity.java:4472)
MainActivity.java
package com.gif.gif;
import android.view.View;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("gif", "onCreate triggered");
}
public void onButtonClick(View v) {
if(v.getId() == R.id.CREATE) {
Intent i = new Intent(MainActivity.this,create.class);
startActivity(i);
}
}
public void openCamera(View v) {
if(v.getId() == R.id.CAMERA) {
Intent intent = new
Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent,0);
}
}
protected void onStart() {
super.onStart();
Log.v("gif", "onStart triggered");
}
protected void onResume(){
super.onResume();
Log.v("gif", "onResume triggered");
}
protected void onPause(){
super.onPause();
Log.v("gif", "onPause triggered");
}
protected void onStop(){
super.onStop();
Log.v("gif", "onStop triggered");
}
protected void onDestroy(){
super.onDestroy();
Log.v("gif", "onDestory triggered");
}
}
Mon code XML est à https://pastebin.com/M5BC8K9V
aussi l'erreur que je reçois est « APP est arrêté » quand je le lance dans le téléphone virtuel –
Veuillez ajouter la trace de pile d'exception. Quelle API utilisez-vous? Avez-vous l'autorisation de l'appareil photo? – rupinderjeet
Ok Voici le XML pour l'autorisation de la caméra –