分享按钮,在对话框

问题描述:

我想分享按钮添加到我的应用程序,和我做了唯一的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问题是为什么它不显示它们?如果以后我会让它们以某种方式出现在手机中,如何让该对话框只显示脸书和推特,如果用户没有,就让用户通过提供官方应用的链接来安装它。

+0

嗨,你可以使用Facebook和Twitter的API做 – Talha

+0

@talhakosen,我不想安装他们的软件开发工具包,并做更多工作。我认为有可能以某种方式过滤对话框...如果它是 – Daler

+0

我看,请看看我的回答 – Talha

您可以通过下面的代码检查他们,

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