Merhaba bu uygulamamda Android telefonumuzdaki galeriden şeçmiş olduğumuz bir resmi instagram uygulamasında paylaşmayı göstereceğim. Bu uygulamayı seçip intentiler araçılıgı ile koyarak gönderiyoruz.
En sık yapılan hatalardan birisi manifest.xml dosyasıda bellek okunma izninin yazılmamasıdır.
Aşağıdaki kodu manifest dosyamıza yazıyoruz.
1 |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
manifest.xml
İzini yadıktan sonra manifest.xml dosyamız aşağıdaki gibi olmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mustafazorbaz.mygallery"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
Activity_main.xml
Uygulamamızın tasarımı için gerekli xml dosyası ve tasarımın görselliği aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/imgView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"></ImageView> <Button android:id="@+id/btnLoadPicture" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Load Picture" android:layout_gravity="center_horizontal"></Button> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Share Picture" android:id="@+id/buttonShare" android:layout_gravity="center_horizontal" /> </LinearLayout> |
MainActivty.java
Bu sınıfımızda ise android uygulamamızın java kodlama kısmını yaptık.
OnCreate metodumuz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //get button instance Button buttonLoadImage = (Button) findViewById(R.id.btnLoadPicture); //set button onlick listener buttonLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { //Resim seçmek için intent oluşturduk galerimizden seçim yaptık. Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); //Activiteyi başlatıyoruz ve image'i yüklüyoruz } }); Button buttonShare= (Button) findViewById(R.id.buttonShare); buttonShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Burada ise seçimiş resmin yolunu instagrama eklemek için metoda gönderdik. String mediaPath = picturePath; createInstagramIntent(mediaPath); } }); } |
resimlerimizi android’te arka plandaki galeriden çektiğimiz kısım ise onActivityResult metodumuz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {//Aktivite sonuçlandığı zaman super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { Uri selectedImg = data.getData(); // Şartlar doğrultusunda resmi çekiyoruz. String[] filePathColumn = { MediaStore.Images.Media.DATA }; //Resmin yolunu elde ettikten sonra Cursor cursor = getContentResolver().query(selectedImg, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); picturePath = cursor.getString(columnIndex); cursor.close(); //get imageview instance ImageView imageView = (ImageView) findViewById(R.id.imgView); // Set the Image in ImageView after decoding the String imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); } else { Toast.makeText(this, "You haven't picked Image", Toast.LENGTH_LONG).show(); } } |
Aşagıdaki kodlarımı ise instagram uygulamasında resmileri paylaşmak içindir.Bu şekilde geliştiricilerin api kullanmadan uygulama geliştimelerine olanak vermesini sağlamaktadır.Bu metot onCreate metodu içerisindeki butonClick olayında çağrılmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
//Bu metodumuz instagramda image paylaşmak için private void createInstagramIntent(String imagePath){ Intent intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android"); //get package if (intent != null) //control for intent { //Bir intent oluşturduk ve instagram uygulammız için paketimizi ekledik. Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setPackage("com.instagram.android"); try { //Resmin yolunu koyduk. shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse (MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, "I am Happy", "Share happy !"))); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } shareIntent.setType("image/jpeg"); startActivity(shareIntent); } else { //uygulama yüklemek için ilgili işlevleri oluşturduk. intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse("market://details?id="+"com.instagram.android")); startActivity(intent); } } |
Bu şekilde uygulamazdan resimleri get ettikten sonra instgram uygulamasına post ediyoruz.
Kolay Gelsin…. 🙂