如何通过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); 

Solutions Collecting From Web of "如何通过Android应用程序在谷歌加分享图像?"

在代码中集成ForGooglePlus Activity,并为其添加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(); } } } } 

Google+应用仅支持内容:// URI 。 您需要使用MediaStore API来实现此目的。

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

我也在谷歌上发布图像加上通过Android使用意图我正在拍摄设备的屏幕截图并将其发布在谷歌加上,我使用你的代码我得到exceptionFileNotFoundException()并且当你提到使用绝对路径我得到错误,方法getAbsolutePath()未定义typesString我的代码如下所示,请建议我修改代码

  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; } } 

谢谢你,并对Nitin表示感谢

不要使用绝对路径。

OnActivityResult()在从相机捕获图像后使用此function。

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

这对我有用。

HEy Deepika你得到的文件也没有find例外,因为你编码的方式设备上没有google plus app只是为了从设备启动本机应用程序

它只有在本机ap存在的情况下才有效

另外就是要谷歌加sdk这是一个小jar文件,你可以共享图像

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

您可以使用以下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); } } }