我尝试实现一个独立于平台的包装器,用于共享带有文件名和Action
作为回调的文件。尽管它确实有效,但我根本不满足于我的Android解决方案。
我目前正在做的是:我正在使用我的MainActivity
注册我的回调,它返回一个ID,我可以使用它来识别回调
int callbackId = MainActivity.Instance.RegisterCallback(completionHandler);
然后我用
开始ActionShare
意图
MainActivity.Instance.StartActivityForResult(Intent.CreateChooser(intent, "Select App"), 123 | (callbackId << 8));#
123
是我的行动标识符。
在我的MainActivity
OnActivityResult
中,我正在使用
var callbackId = (requestCode & 0b1111111100000000) >> 8;
if (this.RemoveCallbackById(callbackId, out var callback))
{
callback();
}
在Xamarin.Android中有更好的方法实现回调吗?我相信必须有,但是只限于传递给StartActivityForResult
的{{1}}只有一个16位整数,这种可能性似乎对我来说非常有限。