PrivateArraylist<string>mimagelist; Private Static Final intRequest_camera = 5;//Camera Photo Tag Private Static Final intCamera_request_code = 1; /*** Take pictures to get photos*/ protected voidSelectpicfromcamera () {if(!sdcardutils.issdcardenable ()) { //no SD card existsToast.maketext ( This, R.string.sd_disable,toast.length_short). Show (); return; } //Dynamic Request permissions after Android 6.0 if(Contextcompat.checkselfpermission ( This, Manifest.permission.CAMERA)!=packagemanager.permission_granted) {Activitycompat.requestpermissions ( This,NewString[]{manifest.permission.camera}, Camera_request_code); } Intent cameraintent=NewIntent (mediastore.action_image_capture); if(Cameraintent.resolveactivity ( This. Getpackagemanager ())! =NULL) {Tempfile=NewFile (Fileutils.createrootpath ( This) + "/" + system.currenttimemillis () + ". jpg"); LOGUTILS.E (Tempfile.getabsolutepath ()); Fileutils.createfile (Tempfile); Uri URI= Fileprovider.geturiforfile ( This, Fileutils.getapplicationid ( This) + ". Provider", Tempfile); List<ResolveInfo> resinfolist = This. Getpackagemanager (). Queryintentactivities (Cameraintent, packagemanager.match_default_only); for(ResolveInfo resolveinfo:resinfolist) {String PackageName=ResolveInfo.activityInfo.packageName; This. Granturipermission (PackageName, Uri, Intent.flag_grant_write_uri_permission|intent.flag_grant_read_uri_permission); } cameraintent.putextra (Mediastore.extra_output, URI); //uri.fromfile (tempfile)Startactivityforresult (cameraintent, Request_camera); } Else{Toast.maketext ( This, "Open camera failed", Toast.length_short). Show (); }} @Overrideprotected voidOnactivityresult (intRequestcode,intResultCode, Intent data) { Super. Onactivityresult (Requestcode, ResultCode, data); if(Requestcode = = Request_camera && ResultCode = =RESULT_OK) { if(Tempfile! =NULL) {Mimagelist.add (Tempfile.getabsolutepath ()); } } }
The ultimate solution to the problem of calling camera photos returned NULL in Android