2013-05-31 18 views
7

私のアプリは写真を撮って、Instagramを共有したいと思います。Androidアプリを使用してInstagramに写真を送信するにはどうすればいいですか?

私のアプリは、私はトーストを受け、私はこのコード

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("image/*"); 

final ContentResolver cr = getContentResolver(); 
final String[] p1 = new String[] {MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_TAKEN}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC"); 

if (c1.moveToFirst()) { 

    Log.i("Teste", "last picture (" + c1.getString(0) + ") taken on: " + new Date(c1.getLong(1))); 
} 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+Environment.getExternalStorageDirectory() + "/DCIM/Camera/tubagram/" + c1.getString(0))); 
shareIntent.setPackage("com.instagram.android"); 

c1.close(); 

startActivity(shareIntent); 

を使用して、私はInstagramの中で共有するtaked最後の画像を取得しようとしている今

File storagePath = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera/tubagram"); 

このディレクトリに画像を保存しますこのエラーメッセージは「ファイルをダウンロードできません」と表示されます。 このトーストはInstagramによって送信されます。

私はこのリンクの例 - share a photo in instagramを使用しようとしましたが、うまくいかなかった。

お願いします。

答えて

17

私は私の問題を解決しました。

この行は、camera.takePictureの後に追加します。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

この行は、携帯電話に保存されているニュース写真を認識した後、「更新」します。

そして私は私の方法

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("image/*");     

final ContentResolver cr = getContentResolver(); 
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.TITLE, MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC"); 

if (c1.moveToFirst()) { 
    Log.i("Teste", "last picture (" + c1.getString(1) + ") taken on: " + new Date(c1.getLong(2))); 
} 

Log.i("Caminho download imagem", "file://"+Environment.getExternalStorageDirectory()+ "/Tubagram/" + c1.getString(1) + ".png"); 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+Environment.getExternalStorageDirectory()+ "/Tubagram/" + c1.getString(1)+".png")); 
shareIntent.setPackage("com.instagram.android"); 

c1.close(); 

startActivity(shareIntent); 

にそしてこのInstagramのは、あなたのボタンクリックリスナーにこのコードを入れて電話

private boolean verificaInstagram(){ 
    boolean installed = false; 

    try { 
     ApplicationInfo info = getPackageManager().getApplicationInfo("com.instagram.android", 0); 
     installed = true; 
    } catch (NameNotFoundException e) { 
     installed = false; 
    } 
     return installed; 
    } 
+0

英語の方法と変数を使用してみてください。皆さんがしようとしていることを誰もが理解できるようにしてください。 – jpros

+0

あなたの画像と一緒にあなたのアプリ名を送ることもできますか?他の人はこのコンテンツが別のアプリを介して送信されていることを認識してください Instagramを直接利用しないでください –

1

にインストールされている場合、私は確認する別の方法でいくつかの変更を行ってあなたをアプリにリダイレクトし、あなたのデバイスがInstagramアプリをインストールしていることを確認します。

String type = "image/*"; 
imageview.buildDrawingCache(); 
Bitmap bmap = imageview.getDrawingCache(); 
Uri bmpUri = getLocalBitmapUri(bmap); 
Intent share = new Intent(Intent.ACTION_SEND); 
if (Utils.isPackageExisted(ActivityFullScreenJoke.this,"com.instagram.android")) { 
share.setPackage("com.instagram.android"); 
} 
share.setType(type); 
share.putExtra(Intent.EXTRA_STREAM, bmpUri); 
startActivity(Intent.createChooser(share, "Share to")); 
関連する問題