IntentSender的目的是什么?

ρяσ*_*я K 20 android android-intent

我想知道IntentSender我们的应用程序类的目的是什么?我们如何在我们的应用程序中使用它?

除了Android Intent Based API之外,还有什么好的例子:第七部分 - IntentSenders和PendingIntents

pix*_*xel 12

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);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 开始ActivityIntentSender,而不是Intent(更多的Android文档)

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

    喜欢startActivity(Intent, Bundle),但IntentSender要开始.

  • 感谢您的回答。很高兴地注意到,开发人员可以在其接收器的 `onReceive()` 方法中使用 `(ComponentName) intent.getExtras().getParcelable(EXTRA_CHOSEN_COMPONENT)` 来获取所选的应用程序信息(包名称等...)。 (2认同)

SBe*_*413 5

官方 Android 开发者文档IntentSender明确指出:

此类的实例不能直接创建,而必须从现有PendingIntentPendingIntent.getIntentSender().

因此,您不会(应该)在代码示例或教程中看到直接使用此类。

至于 a PendingIntent,它基本上是您提供给另一个应用程序的令牌,它允许该应用程序使用您的应用程序的权限来执行您的应用程序代码的特定部分。

这里有一个例子PendingIntent一类应用。