Обмен изображениями и текстом в твиттере не работает
Это мой код, приведенный ниже.FrameLayout используется для публикации в виде изображения JPEG в твиттере. Это код, который я пытаюсь использовать.
sharesp=(Spinner)findViewById(R.id.spnrShare);
sharesp.setAdapter(new MyShAdapter(MainActivity.this, R.layout.rowview, Sharestring));
sharesp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long arg3) {
// TODO Auto-generated method stub
selectitem=parent.getItemAtPosition(position).toString();
selecetint=position;
if(selectitem=="FaceBook" || selecetint==R.drawable.fbbtn){
shareFbook();
}
else if(selectitem=="Twitter" || selecetint==R.drawable.twitbtn){
shareTwitter();
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
public void shareTwitter(){
FrameLayout savFrame_layout=(FrameLayout)findViewById(R.id.frame);
try {
if(MainActivity.this.mainFrame_layout==null){
MainActivity.this.mainFrame_layout.setDrawingCacheEnabled(true);
MainActivity.this.mainFrame_layout.refreshDrawableState();
MainActivity.this.mainFrame_layout.buildDrawingCache();
MainActivity.this.bm_ImgFrame = mainFrame_layout.getDrawingCache();
int i1=100000;
Random random=new Random();
i1=random.nextInt(i1);
MainActivity.fname = "Quick_"+ i1 + ".jpg";
String pathy=Environment.getExternalStorageDirectory()+File.separator+"/MYAnApps";
MainActivity.this.rootFile=new File(pathy);
MainActivity.this.sdImageMainDirectory = new File(MainActivity.this.rootFile + MainActivity.fname);
FileOutputStream fileOutputStream = new FileOutputStream(MainActivity.this.sdImageMainDirectory);
bm_ImgFrame.compress(CompressFormat.JPEG, 80, fileOutputStream);
Uri uri = Uri.parse(MainActivity.this.sdImageMainDirectory.getAbsolutePath());
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("/*");
intent.setClassName("com.twitter.android", "com.twitter.android.PostActivity");
intent.putExtra(Intent.EXTRA_TEXT, "MyAndroidApp: https://play.google.com/store/apps/details?id=com.example.MyApp");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(MainActivity.this.sdImageMainDirectory));
startActivity(intent);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2 ответа
Проверьте этот пример, это работает для меня
Пример обмена изображениями и текстом в Twitter
щебетать с помощью этого
private void showTwittDialog() {
final Dialog dialog = new Dialog(getApplicationContext());
dialog.setContentView(R.layout.twitt_dialog);
dialog.setTitle("Twitter");
Button btnPost = (Button) dialog.findViewById(R.id.btnpost);
final EditText et = (EditText) dialog.findViewById(R.id.twittext);
et.setText(sharingStr);
et.setSelection(et.getText().length());
btnPost.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
twitt_msg = et.getText().toString().trim();
if (twitt_msg.length() == 0) {
showToast("Tweet is empty!!!");
return;
} else if (twitt_msg.length() > 140) {
showToast("Tweet of more than 140 characters not allowed!!!");
return;
}
dialog.dismiss();
new PostTwittTask().execute(twitt_msg);
}
});
dialog.show();
}
protected void Share_to_twitter() {
Intent tweetIntent = new Intent();
tweetIntent.setType("text/plain");
tweetIntent.putExtra(Intent.EXTRA_TEXT, sharingStr);
final PackageManager packageManager = getPackageManager();
List<ResolveInfo> list = packageManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : list) {
twitter_dialog = resolveInfo.activityInfo.packageName;
}
if (twitter_dialog != null && twitter_dialog.startsWith("com.twitter.android")) {
// if the native twitter app is found
tweetIntent.setPackage(twitter_dialog);
startActivity(tweetIntent);
} else {
showTwittDialog();
}
mTwitter.resetAccessToken();
}
class PostTwittTask extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(getApplicationContext());
pDialog.setMessage("Posting Twitt...");
pDialog.setCancelable(false);
pDialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... twitt) {
try {
mTwitter.updateStatus(twitt[0]);
return "success";
} catch (Exception e) {
if (e.getMessage().toString().contains("duplicate")) {
return "Posting Failed because of Duplicate message...";
}
e.printStackTrace();
return "Posting Failed!!!";
}
}
@Override
protected void onPostExecute(String result) {
pDialog.dismiss();
if (null != result && result.equals("success")) {
View popUpView = getLayoutInflater().inflate(R.layout.share_successfully_popup,null);
final PopupWindow popUp = new PopupWindow(popUpView,UtilityClass.dynamicScalingForWidth(100),
UtilityClass.dynamicScalingForWidth(100),true);
popUp.showAtLocation(popUpView.findViewById(R.id.share_successfully_ctr),Gravity.CENTER,0, 0);
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
popUp.dismiss();
}
};
handler.postDelayed(r, 3000);
} else {
showToast(result);
}
super.onPostExecute(result);
}
}
Попробуйте использовать "*/*"
как MIME, так что вы можете отправить любой тип данных.
intent.setType("*/*");
Также попробуйте изменить ACTION_SEND
в ACTION_SEND_MULTIPLE
который специализируется на доставке нескольких данных.
Подробнее о ACTION_SEND_MULTPLE и обработке типов MIME.