Android 从其他应用程序接收图像到我们的应用程序

Android 从其他应用程序接收图像到我们的应用程序,android,image,firebase,share,Android,Image,Firebase,Share,因此,当我使用谷歌照片等其他媒体应用程序时,我会选择一幅图像,然后单击共享按钮,然后在共享窗口中显示我的应用程序,这样我就可以单击它并将该图像添加到我的应用程序中。 我已经建立了一个简单的聊天应用程序,用户可以互相发送文本和图像,所有数据都存储在Firebase中。 因此,当在共享屏幕中单击我的应用程序时,图像应将我带到聊天活动,在那里我拥有所有聊天记录,因此我单击其中一个聊天记录,然后图像将发送给他们。 那么,如何实现这一过程呢?我到处都在搜索,找不到正确的教程,我发现的只是从我们的应用程序共

因此,当我使用谷歌照片等其他媒体应用程序时,我会选择一幅图像,然后单击共享按钮,然后在共享窗口中显示我的应用程序,这样我就可以单击它并将该图像添加到我的应用程序中。 我已经建立了一个简单的聊天应用程序,用户可以互相发送文本和图像,所有数据都存储在Firebase中。 因此,当在共享屏幕中单击我的应用程序时,图像应将我带到聊天活动,在那里我拥有所有聊天记录,因此我单击其中一个聊天记录,然后图像将发送给他们。 那么,如何实现这一过程呢?我到处都在搜索,找不到正确的教程,我发现的只是从我们的应用程序共享数据,而不是从其他应用程序到我们的应用程序。 多谢各位

编辑:我创建了一个单独的活动,当用户选择从其他应用程序共享图像时,应该启动该活动。但当我在“共享”菜单中单击“我的应用程序”时,我的应用程序将全屏显示,而不是启动共享活动。 下面是我的代码和清单文件

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);
            }
        }


    }


}




package com.pappu5.navigation;
公共类共享活动扩展了应用程序共享活动{
火基回收适配器frv;
私人回收车;
私人数据库参考dr,Druser;
私有FirebaseAuth-auth;
私有字符串用户;
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState,@Nullable persistable Bundle persistentState){
super.onCreate(savedInstanceState、persistentState);
rv=(RecyclerView)findViewById(R.id.friendsView);
auth=FirebaseAuth.getInstance();
user=auth.getCurrentUser().getUid();
dr=FirebaseDatabase.getInstance().getReference().child(“朋友”).child(用户);
Druser=FirebaseDatabase.getInstance().getReference().child(“聊天室配置文件”);
keepSynced博士(对);
保持同步(真);
rv.setHasFixedSize(真);
setLayoutManager(新的LinearLayoutManager(getApplicationContext());
Query personquery=dr.orderByKey();
FirebaseRecyclerOptions选项=
新建FirebaseRecyclerOptions.Builder().setLifecycleOwner(此)
.setQuery(PersonQuery、FriendsData.class)
.build();
frv=新的FirebaseRecyclerAdapter(选件){
@凌驾
受保护的无效onBindViewHolder(@NonNull final SharingActivity.sharing holder,int position,@NonNull FriendsData model){
holder.setDate(model.getDate());
holder.setImage(model.getThumb_image());
最终字符串listUsers=getRef(position).getKey();
如果(!listUsers.equals(null))
child(listUsers).addValueEventListener(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
最终字符串username=dataSnapshot.child(“name”).getValue().toString();
字符串thumb=dataSnapshot.child(“thumb_image”).getValue().toString();
//String online=dataSnapshot.child(“onlineStatus”).getValue().toString();
if(dataSnapshot.hasChild(“onlineStatus”)){
字符串userOnline=dataSnapshot.child(“onlineStatus”).getValue().toString();
holder.SetOnline状态(userOnline);
}
holder.setName(用户名);
支架。设置图像(拇指);
//持有者。设置在线状态(在线);
holder.view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图){
CharSequence[]actions=新的CharSequence[]{“共享到”+用户名};
AlertDialog.Builder=新建AlertDialog.Builder(getApplicationContext());
builder.setTitle(“选择动作”);
setItems(操作,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
如果(i==0){
Intent Intent=新的Intent(getApplicationContext(),ChatActivity.class);
intent.putExtra(“id”,列表用户);
intent.putExtra(“用户名”,用户名);
星触觉(意向);
}
}
});
builder.show();
}
});
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
@非空
@凌驾
public SharingActivity.onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.u状态、父级、假);
返回新的共享活动。股东(视图);
}
};
rv.设置适配器(frv);
}
公共静态类扩展了RecyclerView.ViewHolder{
视图;
公众股东(查看项目视图){
超级(项目视图);
视图=项目视图;
}
公共无效设置日期(字符串日期){
TextV
<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>


<activity
        android:name=".MainActivity"
        android:configChanges="orientation"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        // below code with show your app as sharing option
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>

    </activity>