how can you share location same like whatsapp in a

2019-09-22 07:51发布

问题:

I want "share location" functionality same like whatsapp in my current application.

Now to open chooser dialog i used below mentioned code.

public static void showFileChooser(Activity activity, Fragment fragment, boolean isAllowMultiple) {
        try {

            File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "demo");
            if (!imageStorageDir.exists()) {
                imageStorageDir.mkdirs();
            }
            File file = new File(imageStorageDir + File.separator + "i" + String.valueOf(System.currentTimeMillis()) + ".jpg");
            mCapturedImageURI = Uri.fromFile(file); // save to the private variable

            final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
            captureIntent.putExtra("capturedimageuri", mCapturedImageURI.toString());

            // Intent for Audio Recording
            final Intent audioRecordIntent = new Intent();
            audioRecordIntent.setAction(IxxxConstants.ACTION_AUDIO_RECORD);

            final Intent videoRecordIntent = new Intent();
            videoRecordIntent.setAction(IxxxConstants.ACTION_VIDEO_RECORD);

            // Use the GET_CONTENT intent from the utility class
            Intent target = com.xxx.xxx.filechooser.FileUtils.createGetContentIntent();
            if (isAllowMultiple) {
                target.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
            }
            // Create the chooser Intent


            if (activity != null) {
                Intent intent = Intent.createChooser(
                        target, activity.getString(R.string.chooser_title));

                intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{captureIntent, audioRecordIntent, videoRecordIntent});
                activity.startActivityForResult(intent, IMAGE_ANNOTATION_REQUEST_CODE);
            } else {
                Intent intent = Intent.createChooser(
                        target, fragment.getString(R.string.chooser_title));

                intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{captureIntent, audioRecordIntent, videoRecordIntent});
                fragment.startActivityForResult(intent, IMAGE_ANNOTATION_REQUEST_CODE);
            }

        } catch (ActivityNotFoundException e) {
            xxxLog.e(DEBUG_TAG, "Error:" + e);
        } catch (Exception ex) {
            ex.printStackTrace();
            CommonUtilities.showToast(activity, activity.getString(R.string.error_message), Toast.LENGTH_LONG);
        }
    }

After this code chooser opens similar to like this.

Now how can I add share location icon to this file chooser dialog and after selecting a particular location and share it to other user in chat application?

回答1:

Try :

  1. Any chooser don't have every type of actions (i.e video,location,audio,document etc) every chooser is based on one category. So for this chooser screen use Bottomsheet dialog. It is same as dialog it will have custom layout. just make one layout same as the screen and inflate in this.
  2. Now Inside dialog on click of location open place picker of google. It will look same as your location picker screen.
  3. For location display use a custom item layout in recyclerview. i.e layout will have linear layout(vertical) -> imageview and two textviews with some padding. Recyclerview demo.