2015-09-09 27 views
0

我给大家分享一些文字和Android的应用,我已经写了代码的链接如下分享在谷歌加上Android应用程序

 PlusShare.Builder shareBuilder = new PlusShare.Builder(this); 
     shareBuilder.setType("text/plain"); 
     shareBuilder.setText("text to be shared"); 
     shareBuilder.setContentUrl(Uri.parse("link_to_share")); 
     Intent shareIntent = shareBuilder.getIntent(); 
     startActivityForResult(shareIntent, SHARE_GOOGLE_PLUS_REQUEST_CODE); 

此代码工作正常,我可以分享到谷歌加,和我在onActivityResult()中获得一个回调。我的问题是如果用户没有安装谷歌加,应用程序停止响应并退出。我该如何解决这个问题

回答

1

试试下面的代码:

// Google client to interact with Google API 
private GoogleApiClient mGoogleApiClient; 
mGoogleApiClient = new GoogleApiClient.Builder(ThirtyArticleDetail.this) 
    .addConnectionCallbacks(ThirtyArticleDetail.this) 
    .addOnConnectionFailedListener(ThirtyArticleDetail.this).addApi(Plus.API) 
    .addScope(Plus.SCOPE_PLUS_LOGIN).build(); 

btnsharegplus.setOnClickListener(new View.OnClickListener() { 


      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

       if (!mGoogleApiClient.isConnected()) { 
        // Set sharing so that the share is started in onConnected. 
        mSignInClicked= true; 

        if (!mGoogleApiClient.isConnecting()) { 
         mGoogleApiClient.connect(); 
        } 
       } else { 
        Intent shareIntent = new PlusShare.Builder(ThirtyArticleDetail.this) 
        .setType("text/plain") 
        .setText("Welcome to the Google+ platform.") 
        .setContentUrl(Uri.parse(articleurl)) 
        //.setContentUrl(Uri.parse("https://developers.google.com/+/")) 
        .getIntent(); 

        startActivityForResult(shareIntent, 0); 
       } 
      } 
     }); 




@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // TODO Auto-generated method stub 
    if (!result.hasResolution()) { 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 
       0).show(); 
     return; 
    } 

    if (!mIntentInProgress) { 
     // Store the ConnectionResult for later usage 
     mConnectionResult = result; 

     if (mSignInClicked) { 
      // The user has already clicked 'sign-in' so we attempt to 
      // resolve all 
      // errors until the user is signed in, or they cancel. 
      resolveSignInError(); 


     } 
    } 
} 



@Override 
public void onConnected(Bundle arg0) { 
    // TODO Auto-generated method stub 
    mSignInClicked = false; 
    // Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show(); 
    Intent shareIntent = new PlusShare.Builder(this) 
    .setType("text/plain") 
    .setText("Welcome to the Google+ platform.") 
    .setContentUrl(Uri.parse(articleurl)) 
    //.setContentUrl(Uri.parse("https://developers.google.com/+/")) 
    .getIntent(); 

    startActivityForResult(shareIntent, 0); 


} 



@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    //mGoogleApiClient.connect(); 
} 



@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 



@Override 
public void onConnectionSuspended(int arg0) { 
    // TODO Auto-generated method stub 
    if(!(mGoogleApiClient.isConnected())) 
     mGoogleApiClient.connect(); 
} 
/** 
* Sign-in into google 
* */ 
/*private void signInWithGplus() { 
    if (!mGoogleApiClient.isConnecting()) { 
     mSignInClicked = true; 
     resolveSignInError(); 
    } 
} 
*/ 
/** 
* Method to resolve any signin errors 
* */ 
private void resolveSignInError() { 
    try { 
     if (mConnectionResult.hasResolution()) { 

      mIntentInProgress = true; 
      mConnectionResult.startResolutionForResult(this, RC_SIGN_IN); 
     } 
    } catch (SendIntentException e) { 
     mIntentInProgress = false; 
     mGoogleApiClient.connect(); 
    } 
    catch (Exception e) { 
     mIntentInProgress = false; 
     mGoogleApiClient.connect(); 
    } 

} 

首先请到通过follwing联系,并了解GoogleApiClient居然是:

https://developers.google.com/android/guides/api-client

http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/

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

编辑

不要忘记采取以下权限的manifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
+0

mGoogleApiClient?我如何初始化 – droidev

+0

我试过了你的代码,但是它调用了onConnectionFailure(),并且得到了错误信息,登录失败,在指定的方法签名出错,请选择其他帐户。那是什么 ? – droidev

+0

但这是登录的权利?我是否需要实施所有这些共享? – droidev