【发布时间】:2017-02-22 12:27:09
【问题描述】:
我正在使用以下代码来分享文字
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,但没有调用 BroadcastReceiver 的 onReceive()。 为了让它发挥作用,我有什么遗漏吗?
更新:发现上述代码在 5.1(api 22) 上运行良好,但在 6.0(api 23) 上,在拿起应用程序进行分享时不会立即收到广播,或者有时广播会丢失。
【问题讨论】:
-
您是否通过
registerReceiver()或清单在某处注册了BroadcastReceiver? -
是的。我已将其添加到清单中。
标签: android android-pendingintent android-broadcastreceiver