2012-03-03 9 views
1

Twitterで画像を共有する1つのアプリケーションを作成したいと思います。
ボタンをクリックすると、「アプリケーションはこのアクションを実行しません」というメッセージが表示されます。
次のコードに間違いがありますか?Twitterで画像を共有するには?

private void share() 
    { 
    // TODO Auto-generated method stub 
     Intent tweetIntent = new Intent(Intent.ACTION_SEND); 
     tweetIntent.setType("application/twitter"); 
     tweetIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test; please ignore"); 

     startActivity(Intent.createChooser(tweetIntent, "Choose one")); 

    } 

答えて

1

Twitterアプリケーションにはがインストールされている必要があります。これは、ユーザーが積極的にログインする必要があります(ほとんどの人がそうです)。私はtweetIntent.setType("application/twitter");が動作するとは思わない、私はそれを見たことがない。あなたはTwitterのアプリケーションパッケージ名であるtweetIntent.setPackage("com.twitter.android");でフィルタリングすることで、Twitterに対する共有を制限することができます。これは、PackageManagerを使用して利用できることを確認する必要があります。以下は可能なコードですが、私はこれをテストしませんでした。

Intent tweetIntent = new Intent(Intent.ACTION_SEND); 
tweetIntent.setPackage("com.twitter.android"); 
tweetIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test; please ignore"); 

PackageManager pm = context.getPackageManager(); 
if(pm.queryIntentActivities (tweetIntent, 0).size() > 0) { // If there's at least 1 intent that matches then the intent is valid. 
    startActivity(Intent.createChooser(tweetIntent, "Choose one")); 
} else { 
    // Not supported. 
} 

Androidのシェアの意図は、他のアプリケーションに共有するためのデータを送信するためのものです。あなたが行っているように特定のアプリケーションに共有を制限することは可能です。しかし、あなたはAndroidの仕組みの穀物に逆らって、あなたはそれを実行することによって非互換性の問題にあなた自身を開きます。直接Twitter APIを使用する方が良いかもしれません。

ユーザーがTwitterをインストールしていないと、実際には気にしない可能性があります。しかし、彼らはFacebookのような別のサービスでコンテンツを共有したいかもしれない。

0

Twitter上で画像を共有するtwitpic apiを試してみてください。

0

リサーチの後、Twitterにログインしてアプリケーションを作成する必要があることがわかりました。次に、4つのパラメータ、つまりconsumer_key、c​​onsumer_key_secret、access_token、access_token_secretが生成されます。秘密でこれを行うことができます:

Configuration conf = new ConfigurationBuilder().setMediaProviderAPIKey(config.getMediaProvider()) 
         .setOAuthConsumerKey("...") 
         .setOAuthConsumerSecret(""...) 
         .setOAuthAccessToken("...") 
         .setOAuthAccessTokenSecret("...") 
         .build(); 
ImageUpload uploader = new ImageUploadFactory(conf).getInstance(); 

あなたはメッセージをアップロードするためにアップローダーを使うことができます。

0

また、TweetComposerを使用することもできます。あなたはこれをチェックすることができます:working example with Tweet Composer Kit

をTwitterのドキュメントから:TweetComposerキットは、ツイートを構成するには、2つの方法で提供し

  1. 起動Twitterのアプリケーションのツイート作曲 - 機能豊富な作曲をされ画像と動画の添付をサポートします。
  2. Twitter Kitを起動するApp Card Composer - 軽量コンポーザーで、アプリケーション内でアプリケーションカードを使用してツイートを作成できます。

Twitterアプリがインストールされていない場合、インテントはブラウザでtwitter.comを起動しますが、指定された画像は無視されます。

あなたのニーズに合っている場合は、代替ソリューションになる可能性があります。がんばろう!

関連する問題