2012-03-06 83 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在一个类中使用。