2013-06-19 12 views
7

Ich habe ein Problem in Twitter teilen über Absicht.Android Twitter default share-force geschlossen

Ich öffnete eine Twitter-App via Absicht, sobald ich auf den Login-Button klicke, wird Kraft geschlossen. Ich kann den Fehlerbericht nicht finden.

Ist Twitter strikt der Standardanteil in Android? oder müssen ihr SDK verwenden.

Dies ist mein Code für Standard twitter share.can u guys eine Idee, lass es mich wissen ...

versuchen

{

Intent shareIntent = ShareCompat.IntentBuilder 
    .from(Activity.this).setType("text/plain") 
    .setText("Shopup" + review).getIntent() 
    .setPackage("com.twitter.android"); 
    startActivity(shareIntent); 

    } catch (Exception e) 
    { 
    // TODO: handle exception 
     Toast.makeText(Activity.this, "Need twitter application", 
              Toast.LENGTH_SHORT).show(); 

    } 

Antwort

2

Dies ist, was ich tun, Sachen zu teilen mit twitter:

tweetButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      initShareIntentTwi("twi"); 
     } 
    }); 

private void initShareIntentTwi(String type) { 
    boolean found = false; 
    Intent share = new Intent(android.content.Intent.ACTION_SEND); 
    share.setType("text/plain"); 

    // gets the list of intents that can be loaded. 
    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(
      share, 0); 
    if (!resInfo.isEmpty()) { 
     for (ResolveInfo info : resInfo) { 
      if (info.activityInfo.packageName.toLowerCase().contains(type) 
        || info.activityInfo.name.toLowerCase().contains(type)) { 
       share.putExtra(Intent.EXTRA_TEXT, title + " " 
         + shorturl); 
       share.setPackage(info.activityInfo.packageName); 
       found = true; 
       break; 
      } 
     } 
     if (!found) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Twitter"); 

      LinearLayout wrapper = new LinearLayout(this); 
      WebView webView = new WebView(this); 
      EditText keyboardHack = new EditText(this); 

      keyboardHack.setVisibility(View.GONE); 

      webView.loadUrl("https://twitter.com/intent/tweet?status=" 
        + titulo + "%20" + shorturl); 

      webView.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, 
         String url) { 
        view.loadUrl(url); 
        return true; 
       } 
      }); 

      wrapper.setOrientation(LinearLayout.VERTICAL); 
      wrapper.addView(webView, 
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.MATCH_PARENT); 
      wrapper.addView(keyboardHack, 
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT); 

      builder.setView(wrapper); 

      builder.setNegativeButton("Close", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int id) { 
         } 
        }); 

      builder.create().show(); 

      return; 
     } 
     startActivity(Intent.createChooser(share, "Select")); 
    } 
} 

Wenn der Benutzer die Twitter-Apps hat, wird dies geöffnet und wenn nicht, wird es Öffnen Sie einen Warndialog mit einem Webview, das folgendes enthält: "https://twitter.com/intent/tweet?status=" plus den Text, den Sie teilen möchten. Sie können diesen Teil ignorieren, wenn Sie möchten, und nur einen Warndialog anzeigen, der nach der App fragt, oder so ähnlich.

+1

Danke für Ihre Antwort, ich folgte Ihrem Weg für Standard-Twitter teilen seine Arbeit super danke! ... –