1

我使用下面的代碼共享文本獲取應用程序包的名稱由用戶選擇共享使用「Intent.ACTION_SEND」

Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
sharingIntent.setType("text/plain"); 
sharingIntent.putExtra(Intent.EXTRA_TEXT, "share test"); 
startActivity(Intent.createChooser(sharingIntent, "Share using")); 

我想知道用戶選擇共享應用程序的包名。 我曾嘗試做使用IntentSender使用5.1+設備下面的代碼

Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
sharingIntent.putExtra(Intent.EXTRA_TEXT, "share test"); 
sharingIntent.setType("text/plain"); 

Intent receiver = new Intent(this, BroadcastTest.class); 
receiver.putExtra("test", "test"); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT); 
Intent chooser = Intent.createChooser(sharingIntent, "Share using", pendingIntent.getIntentSender()); 
startActivity(chooser); 

以下是廣播接收器

public class BroadcastTest extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     for (String key : intent.getExtras().keySet()) { 
      Log.d(getClass().getSimpleName(), " " + intent.getExtras().get(key)); 
     } 
    } 
} 

提到這個答案https://stackoverflow.com/a/38342788/6053724不過的onReceive(廣播接收器)的是沒有得到調用。 有什麼我失蹤讓它工作?

更新:發現,上面的代碼工作良好5.1(API 22),但是,6.0(API 23)廣播沒有撿爲共享應用程序立即接收或有時廣播會丟失。

+0

您是否通過registerReceiver()或清單在某處註冊了'BroadcastReceiver'? – CommonsWare

+0

是的。我已經添加了它的清單。 –

回答

相關問題