如何通过Android应用程序分享谷歌Plus中的图像?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我已经试过这段代码,但是我没有在我的帐户中看到照片分享:

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);
提问于
用户回答回答于

在你的代码中集成ForGooglePlus活动,并将URL(imageUrl),Description(说明文本)和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();
            }
        }
    }

}
用户回答回答于

你将需要使用该MediaStoreAPI来达到此目的:

 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");

扫码关注云+社区