Anstatt in Bitmap zu konvertieren, nehmen Sie den Screenshot Ihrer ImageView und speichern Sie ihn dann im Bmp-Format.!
Ich habe versucht, ein Foto zu machen und dann das Foto zu verwenden. Hier ist was ich getan habe.
Mein Gerät war Nexus 6P (Android 7.1.1) .
Zuerst habe ich ein Uri
erstellt:
Und dann habe ich Intent
:
Zuletzt habe ich diese Uri
auf onActivityResult
:
In der Zwischenzeit, hier sind UriUtil
:
und getTakePicIntent(Uri)
:
und requireSDKInt
:
Alles funktioniert auf einer anderen Android-API als auf Android Nougat (7.x.x) . Sogar 'FileProvider' wurde bereitgestellt, 'requireBitmap' wird immer als 'null' zurückgegeben.
Nach dem Lesen der Logs wurde FileNotFoundException
von BitmapFactory
geworfen. Es war wie:
Es scheint alles klar zu sein, aber das kann ich immer noch nicht verstehen.
Wie könnte es sein? Klar habe ich ein File
erstellt! Wie könnte ich das lösen? Irgendwelche Ideen?
Ich habe deinen Code ausprobiert. Hier ist die Probe von meinem Versuch. Ссылка .
Sehen Sie sich diesen Blog Ссылка
an commonsware erwähnt im Blog, dass Sie new File (mPicPath.getPath())
nicht tun sollten.
Stattdessen sollten Sie das Folgende in onActivityResult
Und das XML
%Vor%Hinweis: Es ist ein Inhalt uri, den Sie haben. Auf meinem Handy bekomme ich die URI wie folgt. Getestet nur auf Nexus6p.
content: //com.example.raghu.stackoverflowtest.fileProvider/external_files/Pictures/JPEG_20170424_161429691143693160.jpg
Mehr zum Dateianbieter Ссылка
Probieren Sie diese Funktion aus. Das funktioniert für mich
%Vor%Hier ist meine statische Funktion HelperFunction-Klasse, die oben verwenden.
%Vor%}
Es sieht so aus, als würde {@applicationID} eigentlich die Paket-ID Ihrer Anwendung enthalten. So wie es ist, existiert der Ordner nicht, so dass die Datei nicht geschrieben oder gelesen werden kann. es sieht aus wie SPApplication.getInstance (). GetExternalFilesDir (Environment.DIRECTORY_PICTURES); gibt keinen gültigen Pfad zurück.
Um den echten Pfad von der Datenbank in nougat zu erhalten, benutzen Sie diese Funktion und übergeben Sie das uri, das Sie im Datenfeld bekommen, wie in onActivityResult und holen Sie sich dann die Datei aus dem Pfad.
%Vor% Sie sollten FileProvider
verwenden.
Sie können sich auf diese Übertragung für die erforderliche Änderung beziehen.
Probieren Sie diese Funktion aus. Das funktioniert für mich
%Vor%Hier ist meine statische Funktion HelperFunction-Klasse, die oben verwenden.
%Vor%}
Es sieht so aus, als würde {@applicationID} eigentlich die Paket-ID Ihrer Anwendung enthalten. So wie es ist, existiert der Ordner nicht, so dass die Datei nicht geschrieben oder gelesen werden kann. es sieht aus wie SPApplication.getInstance (). GetExternalFilesDir (Environment.DIRECTORY_PICTURES); gibt keinen gültigen Pfad zurück.
Ich habe deinen Code ausprobiert. Hier ist die Probe von meinem Versuch. Ссылка .
Sehen Sie sich diesen Blog Ссылка
ancommonsware erwähnt im Blog, dass Sie %code% nicht tun sollten.
Stattdessen sollten Sie das Folgende in %code%
verwenden %Vor%Und das XML
%Vor%Hinweis: Es ist ein Inhalt uri, den Sie haben. Auf meinem Handy bekomme ich die URI wie folgt. Getestet nur auf Nexus6p.
content: //com.example.raghu.stackoverflowtest.fileProvider/external_files/Pictures/JPEG_20170424_161429691143693160.jpg
Mehr zum Dateianbieter Ссылка
Ich habe versucht, ein Foto zu machen und dann das Foto zu verwenden. Hier ist was ich getan habe.
Mein Gerät war Nexus 6P (Android 7.1.1) .
Zuerst habe ich ein %code% erstellt:
%Vor%Und dann habe ich %code% :
gestartet %Vor%Zuletzt habe ich diese %code% auf %code% :
behandelt %Vor%In der Zwischenzeit, hier sind %code% :
%Vor%und %code% :
%Vor%und %code% :
%Vor%Alles funktioniert auf einer anderen Android-API als auf Android Nougat (7.x.x) . Sogar 'FileProvider' wurde bereitgestellt, 'requireBitmap' wird immer als 'null' zurückgegeben.
Nach dem Lesen der Logs wurde %code% von %code% geworfen. Es war wie:
%Vor%Es scheint alles klar zu sein, aber das kann ich immer noch nicht verstehen.
Wie könnte es sein? Klar habe ich ein %code% erstellt! Wie könnte ich das lösen? Irgendwelche Ideen?
Um den echten Pfad von der Datenbank in nougat zu erhalten, benutzen Sie diese Funktion und übergeben Sie das uri, das Sie im Datenfeld bekommen, wie in onActivityResult und holen Sie sich dann die Datei aus dem Pfad.
%Vor%Anstatt in Bitmap zu konvertieren, nehmen Sie den Screenshot Ihrer ImageView und speichern Sie ihn dann im Bmp-Format.!
Sie sollten %code% verwenden. Sie können sich auf diese Übertragung für die erforderliche Änderung beziehen.
Probieren Glide .
1. Glide-Abhängigkeit zu app / build.gradle hinzufügen
%Vor%2. Laden Sie das Bild mit Glide
%Vor%ODER
%Vor%Tags und Links android bitmap android-7.0-nougat android-camera-intent android-fileprovider