分享按钮,在对话框
问题描述:
我想分享按钮添加到我的应用程序,和我做了唯一的Facebook和Twitter的应用程序如下:分享按钮,在对话框
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
/* Fill it with Data */
shareIntent.setType("plain/text");
shareIntent.putExtra(Intent.EXTRA_TEXT, "www.somesite.com");
/* Send it off to the Activity-Chooser */
startActivity(Intent.createChooser(shareIntent, "Share..."));
它显示一个对话框,我没有看到这个对话框Facebook和推特。我的手机中都安装了这两种应用程序。所以,first
问题是为什么它不显示它们?如果以后我会让它们以某种方式出现在手机中,如何让该对话框只显示脸书和推特,如果用户没有,就让用户通过提供官方应用的链接来安装它。
答
您可以通过下面的代码检查他们,
How to customize share intent in Android?
Android Intent for Twitter application
我已经看到了很多有关修改应用程序选择器的问题,他们 似乎都状态不,您不能更改内置的应用选择器 ,但是您可以使用PackageManager类中的queryIntentActivities() 创建自定义应用选择器。
try{
ApplicationInfo info = getPackageManager().getApplicationInfo("com.facebook.katana", 0);
return true;
} catch(PackageManager.NameNotFoundException e){
return false;
}
try{
ApplicationInfo info = getPackageManager().getApplicationInfo("com.twitter.android", 0);
return true;
} catch(PackageManager.NameNotFoundException e){
return false;
}
+0
因此,在这种情况下,我不能使用意图。我必须拿出我自己的对话框,然后以某种方式将它们发送到应用程序。仍然困惑,但一些想法+1) – Daler
答
成功登录完成后。
public class ShareOnTwitterTrophy extends AsyncTask<String, Integer, Long> {
private Activity mActivity;
private Bitmap bitmap;
public ShareOnTwitterTrophy(Activity mActivity,Bitmap bitmap) {
this.mActivity=mActivity;
this.bitmap=bitmap;
}
protected void onPreExecute() {
}
@Override
protected Long doInBackground(String... arg0) {
long result = 0;
// TwitterSession twitterSession = new TwitterSession(activity);
// AccessToken accessToken = twitterSession.getAccessToken();
AccessToken accessToken = new UserSharedPreference(mActivity).getTwitterAccessToken();
if (accessToken != null) {
Configuration conf = new ConfigurationBuilder()
.setOAuthConsumerKey("your key")
.setOAuthConsumerSecret(
"your secret")
.setOAuthAccessToken(accessToken.getToken())
.setOAuthAccessTokenSecret(accessToken.getTokenSecret())
.build();
ImageUploadFactory factory = new ImageUploadFactory(conf);
ImageUpload upload = factory.getInstance();
Log.d("", "Start sending image...");
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
// you can create a new file name "test.jpg" in sdcard
// folder.
String imagePath = Environment
.getExternalStorageDirectory()
+ File.separator
+ "test.jpg";
File f = new File(imagePath);
f.createNewFile();
// write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
// remember close de FileOutput
fo.close();
upload.upload(f, "");
Log.e("Image Uploaded", "yayeeeee");
result = 1;
} catch (Exception e) {
Log.e("image upload failed", "awwwww :(");
e.printStackTrace();
}
return result;
}
return result;
}
@Override
protected void onPostExecute(Long result) {
if (result == 1)
Toast.makeText(
mActivity,
mActivity
.getString(R.string.twitter_shared_successfully),
Toast.LENGTH_LONG).show();
}
嗨,你可以使用Facebook和Twitter的API做 – Talha
@talhakosen,我不想安装他们的软件开发工具包,并做更多工作。我认为有可能以某种方式过滤对话框...如果它是 – Daler
我看,请看看我的回答 – Talha