2014-02-18 5 views
1

Я создаю приложение, которое я хочу обмениваться изображениями на любой социальной платформе. Я успешно использовал сетку, которая отображает все изображения и может быть просмотрена в конкретном действии полного изображения, чтобы показать выбранное пользователем изображение. Я хочу добавить функцию социальной доли в приложения, которые получают местоположение изображения и разделяют на социальную платформу.Как предоставить общий доступ к изображениям сетки

Вот мой MainActivity.java

package com.jai.desimeme; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.GridView; 

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    GridView gridView = (GridView) findViewById(R.id.grid_view); 

    // Instance of ImageAdapter Class 
    gridView.setAdapter(new ImageAdapter(this)); 

    gridView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 

      // Sending image id to FullScreenActivity 
      Intent i = new Intent(getApplicationContext(), FullImageActivity.class); 
      // passing array index 
      i.putExtra("id", position); 
      startActivity(i); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 




} 

с моим activity_main.XML

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/grid_view" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_marginTop="10dp" 
android:gravity="center" 
android:horizontalSpacing="5dp" 
android:numColumns="4" 
android:stretchMode="columnWidth" 
android:verticalSpacing="5dp" > 

</GridView> 

я использовал FullImageActivity.java для предварительного просмотра выбранного изображения // здесь Я хочу добавить ссылку для совместного доступа.

package com.jai.desimeme; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.MenuItem; 
import android.widget.ImageView; 

@SuppressLint("SdCardPath") 
public class FullImageActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.full_image); 

    // get intent data 
    Intent i = getIntent(); 

    // Selected image id 
    int position = i.getExtras().getInt("id"); 
    ImageAdapter imageAdapter = new ImageAdapter(this); 

    ImageView imageView = (ImageView) findViewById(R.id.full_image_view); 
    imageView.setImageResource(imageAdapter.mThumbIds[position]); 
} 



    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
     File sd = Environment.getExternalStorageDirectory(); 
     String fileName = "test.png"; 
     File dest = new File(sd, fileName); 
     try { 
      FileOutputStream out; 
      out = new FileOutputStream(dest); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
      out.flush(); 
      out.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     switch (item.getItemId()) { 
      case R.id.item: 
       Uri uri = Uri.fromFile(dest); 
       Intent shareIntent = new Intent(); 
       shareIntent.setAction(Intent.ACTION_SEND); 
       shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
       shareIntent.setType("image/jpeg"); 
       startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.share))); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

} 

для кода выше я использовал этот full_image.xml активность.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/full_image_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
<ImageView android:id="@+id/full_image_view" 
android:layout_width="100dp" android:layout_height="100dp" 
android:src="@drawable/image_border" 
style="@style/myImageView" /> 
</LinearLayout> 

здесь я создал ImageAdapter.java для хранения файлов изображений.

package com.jai.desimeme; 

import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 

// Keep all Images in array 
public Integer[] mThumbIds = { 

     R.drawable.rage_0001, 
     ... 
     R.drawable.rage_178, 



}; 

// Constructor 
public ImageAdapter(Context c){ 
    mContext = c; 
} 

@Override 
public int getCount() { 
    return mThumbIds.length; 
} 

@Override 
public Object getItem(int position) { 
    return mThumbIds[position]; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView = new ImageView(mContext); 
    imageView.setImageResource(mThumbIds[position]); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setLayoutParams(new GridView.LayoutParams(70, 70)); 
    return imageView; 
} 

} 

и вот мой AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.jai.desimeme" 
android:versionCode="1" 
android:versionName="1.1.3" android:installLocation="auto"> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" android:permission="android.permission.WRITE_EXTERNAL_STORAGE"> 
    <activity 
     android:name="com.jai.desimeme.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="image/*" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.SEND_MULTIPLE" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="image/*" /> 
</intent-filter> 
    </activity> 
    <!-- FullImageActivity --> 
    <activity android:name=".FullImageActivity"></activity> 
    <activity android:name=".About" android:theme="@android:style/Theme.Dialog"> </activity> 
</application> 

наставит меня, как добавить ссылку обмена в это приложение, я попытался так много способов, но в конечном итоге к ошибкам.

+0

Так в чем же проблема ?? – Piyush

+0

Просьба предоставить информацию об этом возможно и о том, с какими ошибками вы столкнулись. – charno

+1

yarr ... я устал, чтобы дать возможность совместного использования с использованием shareIntent, но я не знаю, как указать местоположение файла для совместного использования ... :( –

ответ

4

Вы можете использовать это при любом событии кликов вашего пользовательского интерфейса.

BitmapDrawable bm = (BitmapDrawable) yourImageView.getDrawable(); 
Bitmap mysharebmp = bm.getBitmap(); 
String path = Images.Media.insertImage(getContentResolver(), 
        mysharebmp, "MyImage", null); 
Uri uri = Uri.parse(path); 
Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
sharingIntent.setType("image/png"); 
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(sharingIntent, 
        "Share image using")); 
+0

приятель может у меня есть ваш идентификатор электронной почты? –

+0

Я буду. Но скажите, если это полезно, потому что его работы отлично – Piyush

+0

, выполнив это, подождите –

Смежные вопросы