4

アプリに共有ボタンを追加したいのですが、次のことを行いました。

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のみを表示する方法、およびユーザーがそれらを持っていない場合は、公式アプリへのリンクを提供してインストールするようにユーザーに依頼します.

4

2 に答える 2

5

以下のコードを使用して確認できます。

Androidで共有インテントをカスタマイズするには?

Twitter アプリケーションの Android インテント

アプリ チューザーの変更に関する多くの質問を見てきましたが、それらはすべて、組み込みのアプリ チューザーを変更することはできませんが、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;
}
于 2012-12-25T15:07:08.460 に答える
1

無事ログイン完了後。

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();
    }
于 2013-10-21T05:55:17.437 に答える