IntentSender的作用是什么?

28
2个回答

23

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);
  • 使用IntentSender而不是Intent来启动Activity(更多信息请参见Android文档

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

    startActivity(Intent,Bundle)类似,但需要一个IntentSender来启动。


  • 3
    ж„ҹи°ўжӮЁзҡ„еӣһзӯ”гҖӮеҫҲй«ҳе…ҙжіЁж„ҸеҲ°ејҖеҸ‘иҖ…еҸҜд»ҘеңЁе…¶жҺҘ收еҷЁзҡ„onReceive()ж–№жі•дёӯдҪҝз”Ё(ComponentName) intent.getExtras().getParcelable(EXTRA_CHOSEN_COMPONENT)жқҘиҺ·еҸ–жүҖйҖүеә”з”ЁзЁӢеәҸзҡ„дҝЎжҒҜпјҲеҢ…еҗҚз§°зӯүзӯүпјүгҖӮ - Mir-Ismaili

    6
    官方的Android开发者文档IntentSender清楚地说明:

    这个类的实例不能直接创建,而是必须使用现有的PendingIntent.getIntentSender()从现有的PendingIntent中创建。

    因此,在代码示例或教程中不应该直接使用此类。
    至于PendingIntent,它基本上是一个令牌,你可以将其提供给另一个应用程序,以允许该应用程序使用你的应用程序权限来执行特定部分的代码。
    这里有一个示例演示了如何在一个类中使用PendingIntent

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接