簡體   English   中英

對話框中僅與Facebook和Twitter應用共享按鈕

[英]Sharing button with only facebook and twitter apps in dialog

我想向我的應用程序添加共享按鈕,並且我已經完成了以下操作:

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,並且如果用戶沒有它們,請要求用戶通過提供指向官方應用程序的鏈接進行安裝。

您可以使用以下代碼進行檢查,

如何在Android中自定義共享意圖?

適用於Twitter的Android Intent

我已經看到了很多有關修改應用程序選擇器的問題,它們似乎都說明不能,您不能更改內置應用程序選擇器,但是可以使用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;
}

成功登錄后。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM