Получать изображения из другого приложения в наше приложение - PullRequest
0 голосов
/ 21 ноября 2019

Поэтому, когда я нахожусь в других мультимедийных приложениях, таких как фотографии Google, я выбираю изображение и нажимаю кнопку «Поделиться», затем в окне «Поделиться» я хочу, чтобы мое приложение отображалось, чтобы я мог щелкнуть по нему и передать это изображение в свое приложение. Я создал простое приложение для чата, где пользователи могут отправлять друг другу текст и изображения, где все данные хранятся в Firebase. Поэтому, когда кто-то щелкает мое приложение на экране общего доступа, изображение должно перевести меня в действие чата, где у меня есть все мои чаты, чтобы я щелкнул один из своих чатов, и изображение было отправлено им. Итак, как добиться этого процесса? Я искал повсюду и не смог найти правильный учебник, все, что я нашел, - это обмен данными из нашего приложения, а не из другого приложения в наше приложение. Спасибо.

Редактировать: я создал отдельное действие, которое должно запускаться, когда пользователь выбирает обмен изображениями из другого приложения. Но когда я щелкаю свое приложение в меню общего доступа, мое приложение становится белым. вместо запуска SharingActivity. Ниже приведен мой код и файл манифеста.

SharingActivity.java

package com.pappu5.navigation;


public class SharingActivity extends AppCompatActivity {

    FirebaseRecyclerAdapter<FriendsData, SharingActivity.ShareHolder> frv;
    private RecyclerView rv;
    private DatabaseReference dr, drUsers;
    private FirebaseAuth auth;
    private String user;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);


        rv = (RecyclerView) findViewById(R.id.friendsView);
        auth = FirebaseAuth.getInstance();
        user = auth.getCurrentUser().getUid();
        dr = FirebaseDatabase.getInstance().getReference().child("Friends_Formed").child(user);
        drUsers = FirebaseDatabase.getInstance().getReference().child("Chat_Profiles");
        dr.keepSynced(true);
        drUsers.keepSynced(true);
        rv.setHasFixedSize(true);
        rv.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

        Query personsQuery = dr.orderByKey();

        FirebaseRecyclerOptions<FriendsData> options =
                new FirebaseRecyclerOptions.Builder<FriendsData>().setLifecycleOwner(this)
                        .setQuery(personsQuery, FriendsData.class)
                        .build();

        frv = new FirebaseRecyclerAdapter<FriendsData, SharingActivity.ShareHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull final SharingActivity.ShareHolder holder, int position, @NonNull FriendsData model) {
                holder.setDate(model.getDate());
                holder.setImage(model.getThumb_image());

                final String listUsers = getRef(position).getKey();

                if (!listUsers.equals(null))

                    drUsers.child(listUsers).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            final String username = dataSnapshot.child("name").getValue().toString();
                            String thumb = dataSnapshot.child("thumb_image").getValue().toString();
                            //String online  = dataSnapshot.child("onlineStatus").getValue().toString();

                            if (dataSnapshot.hasChild("onlineStatus")) {
                                String userOnline = dataSnapshot.child("onlineStatus").getValue().toString();
                                holder.setOnlineStatus(userOnline);
                            }

                            holder.setName(username);
                            holder.setImage(thumb);
                            //holder.setOnlineStatus(online);

                            holder.view.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    CharSequence[] actions = new CharSequence[]{"Share to " + username};
                                    AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
                                    builder.setTitle("Select an Action");
                                    builder.setItems(actions, new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            if (i == 0) {

                                                Intent intent = new Intent(getApplicationContext(), ChatActivity.class);
                                                intent.putExtra("id", listUsers);
                                                intent.putExtra("user_name", username);
                                                startActivity(intent);
                                            }
                                        }
                                    });
                                    builder.show();
                                }
                            });


                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

            }

            @NonNull
            @Override
            public SharingActivity.ShareHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.friends_status, parent, false);

                return new SharingActivity.ShareHolder(view);
            }
        };
        rv.setAdapter(frv);


    }


    public static class ShareHolder extends RecyclerView.ViewHolder {

        View view;

        public ShareHolder(View itemView) {
            super(itemView);

            view = itemView;
        }

        public void setDate(String date) {
            TextView username = (TextView) view.findViewById(R.id.status2);
            username.setText(date);
        }

        public void setImage(String image) {
            CircleImageView thumb = (CircleImageView) view.findViewById(R.id.circleImageView2);
            Picasso.get().load(image).placeholder(R.drawable.default_avatar).into(thumb);

        }

        public void setName(String name) {
            TextView username = (TextView) view.findViewById(R.id.name2);
            username.setText(name);
        }

        public void setOnlineStatus(String onlineStatus) {
            ImageView image = (ImageView) view.findViewById(R.id.onlineStatus);

            if (onlineStatus.equals("true")) {
                image.setVisibility(View.VISIBLE);
            } else {
                image.setVisibility(View.INVISIBLE);
            }
        }


    }


}




AndroidManifest.xml

<activity android:name=".SharingActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="text/plain" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>


...