Android - Why can't I start the choosePictureIntent? -
im trying start choosepictureintent. done clicking on image in ap
@override public void imageclicked(int position) { if(data.get(position).getimguri() != null) { // ignore intent intent= new intent(context, fullscreenactivity.class); intent.putextra("data", data.get(position)); context.startactivity(intent); } else { // code object[] choosedata; choosedata = utils.getchoosepictureintent(context, context.getpackagemanager()); intent chooserintent = (intent) choosedata[0]; chooserintent.putextra("data", data.get(position)); // data array of information chooserintent.putextra("outputfileuri", (uri) choosedata[1]); ((activity) context).startactivityforresult(chooserintent, picture_request); } } when click on image, nothing happens, know else statement gets executed. after that, if click on view besides image, whole app freezes. there no error messages.
any appreciated.
the source of getchoosepictureintent():
public static string getuniquefilename(string prefix, string surfix) { return prefix + system.currenttimemillis() + surfix; } public static object[] getchoosepictureintent(context context, packagemanager manager) { final file root = new file(environment.getexternalstoragedirectory() + file.separator + "imagedir" + file.separator); root.mkdirs(); final string fname = utils.getuniquefilename("img_purchase_", ".jpg"); final file sdimagemaindirectory = new file(root, fname); uri outputfileuri = uri.fromfile(sdimagemaindirectory); // camera. final list<intent> cameraintents = new arraylist<intent>(); final intent captureintent = new intent(android.provider.mediastore.action_image_capture); final packagemanager packagemanager = manager; final list<resolveinfo> listcam = packagemanager.queryintentactivities(captureintent, 0); for(resolveinfo res : listcam) { final string packagename = res.activityinfo.packagename; final intent intent = new intent(captureintent); intent.setcomponent(new componentname(res.activityinfo.packagename, res.activityinfo.name)); intent.setpackage(packagename); intent.putextra(mediastore.extra_output, outputfileuri); cameraintents.add(intent); } // filesystem. final intent galleryintent = new intent(intent.action_pick, mediastore.images.media.external_content_uri); // chooser of filesystem options. final intent chooserintent = intent.createchooser(galleryintent, context.getstring(r.string.picture_chooser)); // add camera options. chooserintent.putextra(intent.extra_initial_intents, cameraintents.toarray(new parcelable[cameraintents.size()])); return new object[]{chooserintent, outputfileuri}; }
if using targetsdk >=24, need add file provider in order replace file uri received camera app content uri because api level 24 has blocked file uri app security reason.you can check out link more info
Comments
Post a Comment