Android 从其他应用程序接收图像到我们的应用程序
因此,当我使用谷歌照片等其他媒体应用程序时,我会选择一幅图像,然后单击共享按钮,然后在共享窗口中显示我的应用程序,这样我就可以单击它并将该图像添加到我的应用程序中。 我已经建立了一个简单的聊天应用程序,用户可以互相发送文本和图像,所有数据都存储在Firebase中。 因此,当在共享屏幕中单击我的应用程序时,图像应将我带到聊天活动,在那里我拥有所有聊天记录,因此我单击其中一个聊天记录,然后图像将发送给他们。 那么,如何实现这一过程呢?我到处都在搜索,找不到正确的教程,我发现的只是从我们的应用程序共享数据,而不是从其他应用程序到我们的应用程序。 多谢各位 编辑:我创建了一个单独的活动,当用户选择从其他应用程序共享图像时,应该启动该活动。但当我在“共享”菜单中单击“我的应用程序”时,我的应用程序将全屏显示,而不是启动共享活动。 下面是我的代码和清单文件 SharingActivity.javaAndroid 从其他应用程序接收图像到我们的应用程序,android,image,firebase,share,Android,Image,Firebase,Share,因此,当我使用谷歌照片等其他媒体应用程序时,我会选择一幅图像,然后单击共享按钮,然后在共享窗口中显示我的应用程序,这样我就可以单击它并将该图像添加到我的应用程序中。 我已经建立了一个简单的聊天应用程序,用户可以互相发送文本和图像,所有数据都存储在Firebase中。 因此,当在共享屏幕中单击我的应用程序时,图像应将我带到聊天活动,在那里我拥有所有聊天记录,因此我单击其中一个聊天记录,然后图像将发送给他们。 那么,如何实现这一过程呢?我到处都在搜索,找不到正确的教程,我发现的只是从我们的应用程序共
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>