2012-03-06 169 views

回答

7

IntentSender是一種抽象或膠類的電平,允許你

  1. 當用戶在選擇器選擇的應用程序,接收廣播的。

    例如,當您使用IntentSender

    Intent intent = new Intent(Intent.ACTION_SEND) 
        .putExtra(Intent.EXTRA_TEXT, "This is my text to send.") 
        .setType("text/plain"); 
    Intent receiver = new Intent(this, BroadcastTest.class) 
        .putExtra("test", "test"); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT); 
    Intent chooser = Intent.createChooser(intent, "test", pendingIntent.getIntentSender()); 
    startActivity(chooser); 
    
  2. 開始Activity,而不是與IntentSenderIntent(更Android docs

    startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)

    startActivity(Intent, Bundle),而是採取了IntentSender啓動。

+1

感謝您的回答。很高興注意到開發人員可以在其接收方'onReceive()'方法中使用'(ComponentName)intent.getExtras()。getParcelable(EXTRA_CHOSEN_COMPONENT)'來獲取所選的應用程序信息(包名等)。 – 2017-03-03 08:09:26

2

IntentSender官方Android開發者文檔中明確指出:

這個類的實例不能與PendingIntent.getIntentSender()直接進行,而是從現有的PendingIntent,而必須創建。

所以,你會(應該)看不到這個類直接在代碼示例或教程中使用。

至於PendingIntent,它基本上是一個令牌,您可以將其授予另一個應用程序,該應用程序允許該應用程序使用您的應用程序的權限執行應用程序的特定代碼。

Here's an examplePendingIntent在一個類中使用。