0

我必须在 android 默认值上共享一个 url,但如果 url 被共享或者只是意图被关闭,我想要一个响应。我正在使用活动结果,但是当我与 gmail 共享时,当我关闭意图时它返回 0(CANCELED) 相同。我需要它来设置在文本视图上共享的文本。这是我的代码。

public void executeShareLinkClick() {
   Intent intentShare = new Intent(ACTION_SEND);
    intentShare.setType("text/plain");
    viewModel.isLinkSharedOpen.set(true);
    intentShare.putExtra(Intent.EXTRA_TEXT,"My Text of the message goes here ... write anything what you want");
    startActivityForResult(Intent.createChooser(intentShare, "Shared the text ..."),111);
}

public void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
   if (resultCode==RESULT_OK){
       viewModel.isLinkShared.set(true);
   }else{
       viewModel.isLinkShared.set(false);
   }
    viewModel.isLinkSharedOpen.set(false);
}
4

2 回答 2

1

对不起,但你想要的不是一个选项。ACTION_SEND不支持结果,并且应用程序不必指示用户是否发送了您的内容。

您可以做的最接近的事情是添加EXTRA_CHOSEN_COMPONENT_INTENT_SENDERIntent返回的createChooser(). 通过它,您可以了解用户是否在该选择器中选择了某些内容。然而:

  • 我认为您不会发现用户是否没有选择任何内容

  • 它仍然不表示用户实际使用所选的应用程序来发送您的内容

于 2021-07-16T22:23:44.447 回答
-1
if(getIntent().getData() != null) {
    Uri fileUri = getIntent().getData();
    File file = new File(fileUri);

}

// for multiple files
if(getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE) && getIntent().getClipData() != null) {

    int count = getIntent().getClipData().getItemCount();
    int currentUri = 0;
    while(currentUri < count) {
        Uri fileUri = getIntent().getClipData().getItemAt(currentUri).getUri();
        File file = new File(fileUri);
        currentUri = currentUri + 1;
    }
}
于 2021-07-16T22:20:00.073 回答