0

私は私のnewfeed.javaタブは、ユーザーがギャラリーから画像を選択し、> firebaseストレージにアップロードできるようにしたいです。また、これらの画像を取得してリストビューに表示する方法は?tabbaseからfirebase storageに画像をアップロードするには?

Newfeed.java

import static android.app.Activity.RESULT_OK; 

    public class NewfeedTab extends Fragment { 

private static final int PICK_IMAGE_REQUEST = 234; 

private StorageReference mStorageRef; 

private EditText story; 
private ImageButton choose; 
private ImageButton upload; 
private Uri filePath; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.news_feed, container, false); 

    mStorageRef = FirebaseStorage.getInstance().getReference(); 
    story = (EditText)rootView.findViewById(R.id.et_story); 
    choose = (ImageButton)rootView.findViewById(R.id.imageButton_choose); 
    upload = (ImageButton)rootView.findViewById(R.id.imageButton_upload); 
    choose.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 

     } 


    }); 
    upload.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(filePath != null){ 
       final ProgressDialog progressDialog = new ProgressDialog(getContext()); 
       progressDialog.setTitle("Uploading"); 
       progressDialog.show(); 

       StorageReference picsRef = mStorageRef.child("images/pic.jpg"); 
       picsRef.putFile(filePath) 
         .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
          @Override 
          public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
           progressDialog.dismiss(); 
           Toast.makeText(getContext(),"Story posted",Toast.LENGTH_SHORT); 
          } 
         }) 
         .addOnFailureListener(new OnFailureListener() { 
          @Override 
          public void onFailure(@NonNull Exception e) { 
           progressDialog.dismiss(); 
           Toast.makeText(getContext(),"Story couldn't be posted",Toast.LENGTH_SHORT); 
          } 
         }) 
         .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { 
        @Override 
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { 
         //calculating progress percentage 
         double progress = (100.0 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount(); 

         //displaying percentage in progress dialog 
         progressDialog.setMessage("Uploaded " + ((int) progress) + "%..."); 
        } 
       }); 
      } 
     } 
    }); 
    return rootView; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     filePath = data.getData(); 

    } 
} 

}

アプリは、ギャラリーから画像を選択した後閉じます。 NewfeedTab.javaは、タブ付きアクティビティの一部です。

newsfeed.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.seven.pprs.bloodlink.TabActivity$PlaceholderFragment"> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textMultiLine" 
    android:ems="10" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/et_story" 
    android:layout_toStartOf="@+id/imageButton_choose" 
    android:hint="Share your stories here" /> 

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:srcCompat="@mipmap/ic_file_upload_black_24dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentEnd="true" 
    android:id="@+id/imageButton_upload" /> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentStart="true" 
    android:dividerHeight="1dp" 
    android:divider="@android:color/holo_red_dark" 
    android:id="@+id/list_of_posts" 
    android:layout_marginBottom="16dp" 
    android:layout_below="@+id/et_story" /> 

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:srcCompat="@mipmap/ic_add_a_photo_black_24dp" 
    android:layout_alignBottom="@+id/imageButton_upload" 
    android:layout_toStartOf="@+id/imageButton_upload" 
    android:id="@+id/imageButton_choose" /> 

答えて

0

あなたのAndroidManifest.xmlに設定読み取り権限を持っていますか:

  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+0

ありがとうございました。私は今それを追加し、画像を選択した後で活動を再開します。しかし、私は、アップロードボタンをクリックしたときに、それは 'W/DynamiteModuleとしてエラーを与える:com.google.android.gms.firebasestorageのローカルモジュール記述子クラス – raviw3

+0

をfound.'ない。このようなストレージの参照を指定します(FirebaseコンソールからURLを取得します。):StorageReference mStorageRef = FirebaseStorage.getInstance()getReferenceFromUrl( "GS:// {nameOfStorage} .appspot.comが")。 –

+0

あなたは私は私はあなたの依存関係を見ることができるように –

関連する問題