【问题标题】:Sharing button with only facebook and twitter apps in dialog对话框中只有 facebook 和 twitter 应用程序的共享按钮
【发布时间】:2013-10-21 14:17:51
【问题描述】:

我想在我的应用中添加分享按钮,我已经完成了以下操作:

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 和 twitter。我的手机中确实安装了这两个应用程序。所以,first 问题是为什么它不显示它们? second 如果以后我会让它们以某种方式出现在手机中,如何使该对话框仅显示 facebook 和 twitter,如果用户没有它们,请用户通过提供官方应用程序的链接来安装它。

【问题讨论】:

  • 嗨,您可以使用 facebook 和 twitter api 来做到这一点
  • @talhakosen,我不想安装他们的 sdks 并做更多的工作。我认为有可能以某种方式过滤对话框......如果是
  • 我明白了,请看我的回答
  • 你可以在这里找到最佳答案stackoverflow.com/a/9229654

标签: android


【解决方案1】:

您可以使用以下代码检查它们,

How to customize share intent in Android?

Android Intent for Twitter application

我看到很多关于修改应用选择器的问题,他们 似乎都说不,你不能改变内置的应用程序选择器, 但您可以使用 queryIntentActivities() 创建自定义应用选择器 在 PackageManager 类中。

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

【讨论】:

  • 所以,在这种情况下,我不能使用意图。我必须拿出我自己的对话框,然后以某种方式将它们发送到应用程序。仍然很困惑,但为一些想法+1)
【解决方案2】:

成功登录完成后。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2015-07-20
    相关资源
    最近更新 更多