Du kannst ihn doch auch da übergeben.
Oder benutze in der Klasse eine Instanz Variable und im Costrruktor übergibst du den Context und speicherst ihn in der Variablen.
Du kannst ihn doch auch da übergeben.
Oder benutze in der Klasse eine Instanz Variable und im Costrruktor übergibst du den Context und speicherst ihn in der Variablen.
Dann gebe der Methode doch den Context als Parameter mit.
Dann hast du ihn auch in der Methode.
Zitatval intent = Intent(context, BluetoothAdapter::class.java) // <- funktoniert so nicht!!!
Die Klasse BluetoothAdapter ist eine Klasse von Android also vom System und nicht vom deinem Projekt.
Das was du machen willst ist ein direkter „Explizite Intents“ damit kannst du eine Klasse aus deinem Projekt aufrufen.
Du willst eine App von System aufrufen dafür ist der „Implizite Intent“ gedacht.
Willst du einen direkten Intend dann musst du eine Klasse schreiben die von der Adapter Klasse erbst.
So was banales hatte ich vermutet. Schön das du es selber gefunden hast.
Da kann ich nur sagen sinnvolle Bezeicher und Clean Code machen einiges leichter.
Habe jetzt festgestellt, es betrifft immer nur das erste Foto von drei in meinem Layout. Sollte dann lösbar sein.
Da wäre vielleicht ein Blick in das Layout und Code sinnvoll.
Das sind gute Ideen, aber wie der Link oben bei Developers ist "startActivityForResult" auch deprecadet !
Soll man das denn trotzdem verwenden ?
Du hast doch schon gezeigt wie man es neu macht. also wo ist das Thema alten Code in neu Code zu verwandeln.
ContentResolver contentResolver = context.getContentResolver();
InputStream inputStream = contentResolver.openInputStream(uri);
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK && result.getData() != null) {
//Bundle bundle = result.getData().getExtras();
//bitmap = (Bitmap) bundle.get("data");
Uri uri = result.getData();
ContentResolver contentResolver = context-der-Activity.getContentResolver();
InputStream inputStream = contentResolver.openInputStream(uri);
...
//taskPicture.setImageBitmap(bitmap);
}
Alles anzeigen
solte weiterhin laufen.
kannst dir ja auch gleich das bitmap holen .
Du benutzt ja einen Intent, und startest somit die Camera App.
Die gibt dir mittels einem Intent das Ergebnis. Ein Intent ist nicht dafür gemacht große Daten zu speichern. Deshalb wird auch nur das Preview direkt dem Intent mitgegeben.
Aber es wird auch eine URI zum Provider mitgeben, mit dessen Hilfe kommst du an das grosse Image.
Das sollte auch immer noch so gehen. Welche Camera API die interne App benutz kann dir hier ja egal sein.
Tipp2 wenn du eine gültige URI zu dem Storage hast kannst du die ja dem Intent auch gleich zum Speichen mitgeben. dabei ist es egal ob es nur eine Virtuelle Path angebe ist.
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
ok danke für den ausfürlichen code.
wie schon gesagt holst du hiermit nur das Preview nivht die hohe auflösung
ZitatAlles anzeigenpublic void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK && result.getData() != null) {
Bundle bundle = result.getData().getExtras();
bitmap = (Bitmap) bundle.get("data");
taskPicture.setImageBitmap(bitmap);
}
wie du an die hohe Auflösung kommst ist in dem Link.
denn rest des codes habe ich mir noch nicht angesehen.
Bis jetzt hast du uns ja vorenthalten wie du zu dem Image kommst. Welche Camera API du benutzt...
Da kann man auch nicht viel helfen.
Meine Glaskugel zeigt mir da wenig an.
Das was du bei Activityresult bekommst ist die Preview. Du bekommst aber auch den Virtuellen Path- URI zu der Datei um sie über den Contentprovider zu laden.
Beim wider lesen der Datei musst du auch den intent und file provider benutzen.
Dann versuche doch mal die Datei einzlesen und im Imageview anzuzeigen. Dann siehst du ob du es lesen kannst.
Du nutzt ja auch für den Zugriff auf die Datei einen intent. Der den User fragt.
Wo ist denn nun dein Problem?
.
Wird das image1 angezeigt oder nicht?
Ich weiß nicht was du mir mit den Bildern sagen willst.
FileInputStream fis = new FileInputStream(imageFile); byte[] byteImage= new byte[fis.available()]; fis.read(byteImage);
Und ihr würdest du nur ein Byte lesen ohne Schleife.
Da die APP mit dem Gallery-Zugriff läuft, ist mir das noch egal.
Und das mag ich zu bezweifeln das deine App einen Zugriff auf die Images Ordner hat.
Zeige wie du das macht und wie du meinst wirklich die Datei zu öffnen.
Wie hast du denn das Bild erstellt?
Wenn du zum Erstellen den Intent benutzt hast klar wird da das Bild im Image ordner abgelegt. Denn die app die fu mit dm intent aufrufst hat ja auch die rechte dazu.
Das was du mit dem file provider versuchst reicht nicht aus du hast ja keine Meta zeilen und auch kein Path xml.
https://medium.com/@aungkyawmyint_26195/using-implicit-camera-intent-with-fileprovider-8182f59ee972
Eigentlich ist der Fileprovider dazu da um Zugriff auf deinen App eigenen Speicherbereich nach außen zugeben für andere Apps. Zb um Dokumente die in deinen geschützten App bereich sind auch mit einem Intent als Mail zu senden.
Du willst aber Zugriff auf den exteren Speicher haben und ab Android 10 ist SAF angesagt.
Du kompilerst für Android 13 API 33.
targetSdk 33
Hallo ich glaube ich hatte svhon mal gesagt das
Ab Andtoid 9 scoped storage memory.
Die datei wird sicherlich nicht in den Ordner erstellt werden. Teste prüfe es ob überhaupt die Datei erstellt wird. Ich würde sagen nein.