7

インテント経由の Twitter 共有に問題があります。

ログインボタンをクリックすると、強制的に閉じられます。エラーレポートが見つかりません。

Twitter strict は Android のデフォルトのシェアですか? またはその SDK を使用する必要があります。

これは、デフォルトの Twitter 共有の私のコードです。何かアイデアがあれば教えてください...

試す

{

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

     }
4

1 に答える 1

2

これは私がツイッターで何かを共有するためにしていることです:

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

ユーザーが Twitter アプリを持っている場合はそれが開き、そうでない場合はアラート ダイアログが開き、次の内容を含む Web ビューが表示されます:" https://twitter.com/intent/tweet?status= " とあなたが入力したテキスト共有したい。必要に応じて、この部分を無視して、アプリなどを要求するアラート ダイアログを表示することができます。

于 2013-06-20T14:56:34.983 に答える