Подтвердить что ты не робот

Как обмениваться изображениями в google Plus через приложение Android?

Я уже пробовал этот код, но я не видел фотографии, разделяемой в моей учетной записи.

File file = new File("sdcard/1346249742258.jpg");
String photoUri = null;
photoUri = file.getAbsolutePath();

Intent shareIntent = ShareCompat.IntentBuilder.from(this)
        .setText("Sharing an image on Google!").setType("image/jpeg")
        .setStream(Uri.parse(photoUri)).getIntent()
        .setPackage("com.google.android.apps.plus");
startActivity(shareIntent);
4b9b3361

Ответ 1

Интегрируйте действие ForGooglePlus в свой код и поместите URL (imageUrl), описание (текст описания) и contentUrl (URL) для него. Примечание. Следующий код также работал в моем приложении.

public class ForGooglePlus extends Activity
{
    private String imageUrl, description, contentUrl;
    private Context mContext;
    private int REQUEST_FOR_GOOGLE_PLUS = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        mContext = this;
        imageUrl = getIntent().getStringExtra("URL");
        description = getIntent().getStringExtra("Description");
        contentUrl = getIntent().getStringExtra("contentUrl");

        if (isPackageInstalled("com.google.android.apps.plus", mContext)) {
            if (imageUrl == null) {
                imageUrl = "";
            }
            if (description == null) {
                description = "";
            }
            // Intent shareIntent = new PlusShare.Builder(this)
            // .setType("image/jpeg")
            // .setText(description)
            // .setStream(getUriFromUrl(imageUrl))
            // .setContentUrl(Uri.parse(contentUrl))
            // .getIntent();

            Uri uri = getUriFromUrl(imageUrl);
            if (uri != null) {
                Intent shareIntent = ShareCompat.IntentBuilder
                        .from(ForGooglePlus.this)
                        .setText(description + "\n" + contentUrl)
                        .setType("image/jpeg").setStream(uri).getIntent()
                        .setPackage("com.google.android.apps.plus");
                startActivityForResult(shareIntent, REQUEST_FOR_GOOGLE_PLUS);
            } else {
                Intent shareIntent = ShareCompat.IntentBuilder
                        .from(ForGooglePlus.this)
                        .setText(description + "\n" + contentUrl)
                        .setType("image/jpeg").getIntent()
                        .setPackage("com.google.android.apps.plus");
                startActivityForResult(shareIntent, REQUEST_FOR_GOOGLE_PLUS);
            }
        } else {
            Toast.makeText(mContext, "Application not found", Toast.LENGTH_LONG)
                    .show();
            finish();
        }
    }

    public Uri getUriFromUrl(String thisUrl) {
        try {

            Bitmap inImage = ImageLoader.getInstance().loadImageSync(thisUrl);
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
            String path = Images.Media.insertImage(
                    mContext.getContentResolver(), inImage, "Title", null);
            return Uri.parse(path);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();

        }
        return null;
    }

    private boolean isPackageInstalled(String packagename, Context context) {
        PackageManager pm = context.getPackageManager();
        try {
            pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (NameNotFoundException e) {
            return false;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_FOR_GOOGLE_PLUS) {
            if (resultCode == RESULT_OK) {
                finish();
            } else {
                Toast.makeText(mContext,
                        mContext.getString(R.string.msg_gp_cancel),
                        Toast.LENGTH_LONG).show();
                finish();
            }
        }
    }

}

Ответ 2

Приложение Google+ поддерживает content://URI. Для этой цели вам понадобится API MediaStore.

 File tmpFile = new File("/path/to/image");
 final String photoUri = MediaStore.Images.Media.insertImage(
         getContentResolver(), tmpFile.getAbsolutePath(), null, null);

 Intent shareIntent = ShareCompat.IntentBuilder.from(this)
         .setText("Hello from Google+!")
         .setType("image/jpeg")
         .setStream(Uri.parse(photoUri))
         .getIntent()
         .setPackage("com.google.android.apps.plus");

Ответ 3

Я также размещаю изображение на google plus через android, используя намерение. Я делаю снимок экрана и размещаю его на google plus, я использовал ваш код. Я получаю исключение FileNotFoundException(), и, как вы говорите, использовать абсолютный путь, который я получил ошибка, Метод getAbsolutePath() - undefined для типа String мой код приведен ниже пожалуйста, предложите мне коррекцию в коде

    package com.testproject;


    import java.io.File;
    import java.io.FileNotFoundException;

    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.RelativeLayout;

    public class TestProjectActivity extends Activity {

        private Button share_btn = null; 
        private String url=null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            share_btn = (Button)findViewById(R.id.share_btn);
            share_btn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Intent intent=new Intent(TestProjectActivity.this,ShareDialogActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    
                    startActivityForResult(intent, 1);  
                }
            });
        }
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            String url =takeScreenShot();
            super.onActivityResult(requestCode, resultCode, data);
            switch (resultCode) {
            case 1:
                String share = data.getExtras().getString("NAME");
                if(share!=null && share.equalsIgnoreCase("Share with Instagram")){
                    Intent i = new Intent(Intent.ACTION_SEND);
                    i.setType("image/jpg");
                    i.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));
                    startActivity(Intent.createChooser(i, "Share Image"));
                }

                if(share!=null && share.equalsIgnoreCase("Share with GooglePlus")){
                    Intent shareIntent = new Intent(Intent.ACTION_SEND);
                    File tmpFile = new File(url);
                    String photoUri=null;
                    photoUri = url.getAbsolutePath();
                    try {
                        photoUri = MediaStore.Images.Media.insertImage(
                                getContentResolver(), tmpFile.getAbsolutePath(), null, null);
                        shareIntent = ShareCompat.IntentBuilder.from(this)
                        .setText("Hello from Google+!")
                        .setType("image/jpeg")
                        .setStream(Uri.parse(photoUri))
                        .getIntent()
                        .setPackage("com.google.android.apps.plus");
                        startActivity(shareIntent);
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                break;
            }
        }
        public String takeScreenShot(){
            try{
                RelativeLayout  view = (RelativeLayout)findViewById(R.id.icflag_layout);
                View v1 = view.getRootView();
                System.out.println("Root View : "+v1);
                v1.setDrawingCacheEnabled(true);
                Bitmap bm = v1.getDrawingCache();
                url =MediaStore.Images.Media.insertImage(getContentResolver(), bm,"screeshot.jpg", 1233+ ".jpg Card Image");
            }
            catch(OutOfMemoryError e){

            }
            return url;
        }
    }

Спасибо и приветствую Нитин

Ответ 4

Не используйте абсолютный путь.

OnActivityResult() использует это после захвата изображения с камеры.

Uri photoUri = intent.getData();                
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
                         .setText("Hello From Google+!")
                             .setType("image/jpeg")
                             .setStream(photoUri)
                             .getIntent()
                     .setPackage("com.google.android.apps.plus");
startActivity(shareIntent);

Это работает для меня.

Ответ 5

Здравствуйте, Deepika, вы получаете файл или не обнаружили исключение, потому что это приложение google plus отсутствует на устройстве, так как вы закодировали только для запуска собственного приложения с устройства.

он будет работать только в том случае, если нативный ap будет присутствовать

иначе будет иметь google plus sdk, который является небольшим файлом jar, с которым вы можете обмениваться изображением

https://developers.google.com/+/mobile/android/

Ответ 6

Вы можете обмениваться изображениями, используя приведенные ниже api. Подробные инструкции по проверке шагов

http://androidsrc.net/integrating-google-plus-sign-in-into-your-android-application/

 /**
     * API to process media post request start activity with MIME type as video
     * and image
     */
    private void processShareMedia() {
        Intent photoPicker = new Intent(Intent.ACTION_PICK);
        photoPicker.setType("video/*, image/*");
        startActivityForResult(photoPicker, PICK_MEDIA_REQUEST_CODE);

    }

/**
 * Handle results for your startActivityForResult() calls. Use requestCode
 * to differentiate.
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_MEDIA_REQUEST_CODE) {
        // If picking media is success, create share post using
        // PlusShare.Builder
        if (resultCode == RESULT_OK) {
            Uri selectedImage = data.getData();
            ContentResolver cr = this.getContentResolver();
            String mime = cr.getType(selectedImage);

            PlusShare.Builder share = new PlusShare.Builder(this);
            share.setText("Hello from AndroidSRC.net");
            share.addStream(selectedImage);
            share.setType(mime);
            startActivityForResult(share.getIntent(),
                    SHARE_MEDIA_REQUEST_CODE);
        }
    }
}

Ответ 7

Google Plus прекратил предоставление доступа к контентной службе с декабря 2018 года. Для получения дополнительной информации перейдите по ссылке ниже https://support.google.com/plus/answer/9217723?hl=ru.