これは私がツイッターで何かを共有するためにしていることです:
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= " とあなたが入力したテキスト共有したい。必要に応じて、この部分を無視して、アプリなどを要求するアラート ダイアログを表示することができます。