2016-12-15 33 views
6

我有一个功能,我的应用程序,让人们共享内容。三星设备自动设置共享默认应用程序意向

它通常的工作方式是:

设备要求用户选择一个应用程序来处理Intent。用户可以选择'一次'或'总是'。

在某些三星设备上,例如Galaxy S6中,只有'一次'和'总是'的选项缺失,选择一个应用程序后,这个应用程序成为该事件的标准。

这甚至会导致我的应用程序被新安装的,试图共享时,将不会向用户询问可言,Intent只是由用户从另一个应用程序共享时选择共享应用程序处理!

有些三星设备的这个问题记录在herehere

这是我建立我的简单的意图:

Intent intent = ShareCompat.IntentBuilder.from(this) 
     .setSubject("mySubject") 
     .setText("myText") 
     .setType("text/plain") 
     .setChooserTitle("myChooserTitle").getIntent(); 

startActivity(intent); 

我也试过:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "myText"); 
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "mySubject"); 
sendIntent.setType("text/plain"); 

startActivity(sendIntent); 

我的问题是:我可以做任何事情从我的代码,以防止这种还是我必须告诉我的用户下次不要购买三星?

+0

你不ussually定义这个意图在清单中,活性应通过意图是推出?可能你已经做到了,但在这里没有看到它。也许你可以根据具体意图定义,只有你的活动应该启动。我不知道你在说什么,但是我使用NFC Intent(由标签上的NDEF触发),如果它从标签中读出特定的NDEF,它就会启动我的Activity。 –

+1

@AndroidNFC我不想让自己的活动启动,但用户选择与某人分享某些文本的任何应用程序,例如WhatsApp,电子邮件客户端等 – FWeigl

回答

10

下解决了这一问题:

startActivity(Intent.createChooser(sendIntent, "title")); 
相关问题