2016-12-15 70 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")); 
相關問題