- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在我的react-native项目的android部分成功实现了接收共享 Intent 处理。现在我想对 iOS 部分做同样的事情。
为了更好地了解我在 Android 中做了什么,以及我想要在 iOS 中做什么。为了清楚起见,我将展示一些代码 fragment 。我不确定 iOS 世界中所有术语的名称,这使得搜索知识/示例非常困难。希望这里有人了解这两个平台并且可以将 android 翻译成 iOS 术语吗?
为了使我的应用程序出现在 native Android“共享方式”菜单中,我将这些 Intent 过滤器添加到我的 AndroidManifest.xml
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
这允许用户标记一些文本,我的案例网址,并将网址直接共享到我的应用程序。为了将该共享网址传递给react-native部分,我在我的MainActivity.kt中添加了以下内容(也可以是java)
class MainActivity : ReactActivity() {
override fun createReactActivityDelegate(): ReactActivityDelegate {
return object : ReactActivityDelegate(this, mainComponentName) {
override fun getLaunchOptions(): Bundle? {
return gerenateBundleFromIntent(intent)
}
}
}
private fun gerenateBundleFromIntent(intent: Intent) : Bundle {
val bundle = Bundle()
when {
intent?.action == Intent.ACTION_SEND -> {
if ("text/plain" == intent.type) {
intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
bundle.putString("shareUrl", it)
}
}
} else -> {
// Handle other intents, such as being started from the home screen
}
}
return bundle
}
}
putString("shareUrl", it)
将成为一个名为 shareUrl
这允许我在我的 react native 代码(app.js)中接收数据,如下所示:
export default class App extends Component<Props> {
constructor(props) {
super(props)
this.state = {
uri: undefined,
shareUrl: this.props.shareUrl
}
}
...
}
如果可能的话,我希望能够以类似的方式在 iOS 设备上共享此应用程序的 url,并将该 url 传递给我的react-natve App.js 的 shareUrl
属性
从哪里开始?这些是由react-native cli生成的iOS目录,我需要向哪些文件添加什么?
最佳答案
您可以使用 UIActivityViewController 将 iOS 应用中的某些内容共享给其他应用,
func shareSomething() {
let text = "abc"
let image = UIImage(named: "ABC")
let url = NSURL(string:"https://www.google.com")
let share = [text , image! , url]
let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
}
objective-c 代码是,
- (void)shareSomething
{
NSURL *url = [NSURL fileURLWithPath:imagePath];
NSArray *objectsToShare = @[url];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
[controller setCompletionHandler:^(NSString *activityType, BOOL completed)
{
}]
[self presentViewController:controller animated:YES completion:nil];
}
如果你想将 iOS 中的某些内容作为 props 传递给 React-Native,你可以在 AppDelegate.m 文件中的
中执行此操作didFinishLaunchingWithOptions
函数。像这样,
NSArray *imageList = @[@"http://foo.com/bar1.png",
@"http://foo.com/bar2.png"];
NSDictionary *props = @{@"images" : imageList};
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"YOUR_APP_NAME"
initialProperties:props];
关于android - react-native handle device "share to"特性 iOS/android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572181/
我使用线程将数据发送到我的 USB 设备(不是数据存储)并从设备获取返回数据。 它在前 5 分钟内运行良好。数据输入,数据输出。 (我几乎在第六分钟开始唱歌。) 然后突然失去了联系。 有logcat消
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: adb cannot find my device for Android debugging. Why? 我是安卓
我有一台安装了win10的电脑, 我已在外部硬盘上安装了 ubuntu 16.04, 现在,当我启动计算机并且外部硬盘已连接到电脑时 grub 菜单打开,我可以在 win10 或 ubuntu 之间进
假设我想使用 Microsoft.Azure.Devices 包/SDK 加载设备信息,这与我所说的有什么区别: RegistryManager regManager = RegistryManage
我在 Windows PC 上使用 VS-2017。我可以使用模拟器测试和运行 iOS 应用程序。 现在我开始为 AppStore 构建应用程序。 构建成功。 现在我在项目解决方案菜单中选择“部署..
任何帮助,将不胜感激。我一般对tensorflow和编程都是陌生的。我正在按照github(https://github.com/experiencor/keras-yolo3)中的说明学习YOLO-
我用 adb 将 4 台设备连接到我的笔记本电脑。 最近我开始看到我的一个 android 设备“离线”,而其他设备运行文件。 我的问题是,离线到底是什么意思,是什么原因造成的? 最佳答案 每次adb
我想在我的物理设备上开始用espresso编写的仪器测试。 想法如下:我的公司有一个应用程序的白标解决方案,因此我们有很多应用程序可以放入 Play 商店。为了支持我们的支持团队,我编写了一个测试,为
当出现这种情况时,我的应用程序当前正在接收与之前的应用程序用户帐户关联的推送通知: 玩家安装应用程序并注册为“bob” bob 的设备 token 在网络服务中注册 玩家重新安装了应用程序并注册为“p
我正在使用命令行编译和安装 Android 应用程序,当我尝试将其安装到设备上时,会发生以下情况: $> adb devices List of devices attached 8c092420
我使用标准 CUDA malloc 在 CUDA 中分配了一个内存数组,并将其传递给函数,如下所示: void MyClass::run(uchar4 * input_data) 我还有一个类成员,它
我的真实设备是 Sony Xperia c6502 Android 版本 4.3我确定我已将它连接到我的计算机并打开了开发人员选项/USB 调试 在 SDK 管理器中,已经安装了 Google USB
某些设备的设备密度返回 0。以下代码用于计算设备密度: WindowManager wm = (WindowManager) context .getSystemService(Con
我正在将一个小文件 (8.5 Mb) 上传到 flask 测试服务器。 当文件上传完成后,服务器报告: File "/home/ubuntu/.virtualenvs/eco_app/lib/
我正在编写一个小应用程序,我需要将一个变量传递给一个函数。问题是该变量是一个绑定(bind),但该函数必须接受一个常规变量。 代码: ForEach($deviceArrays.devices, id
我正在编写一个小应用程序,我需要将一个变量传递给一个函数。问题是该变量是一个绑定(bind),但该函数必须接受一个常规变量。 代码: ForEach($deviceArrays.devices, id
我创建了一个新的 quasar 项目,添加了 cordova 并进行了一些尝试。 一切正常,我可以在手机上部署该应用程序并在模拟器中运行它。 现在,我需要获取一些设备信息,我想为此使用 cordova
根据 W3C The ‘device-width’ media feature describes the width of the rendering surface of the output d
我的数据迭代器当前在 CPU 上运行,因为 device=0 参数已弃用。但我需要它与模型的其余部分一起在 GPU 上运行。 这是我的代码: pad_idx = TGT.vocab.stoi[""]
Cordova 版本:3.5.0 我正在尝试使用 pushPlugin 实现推送通知.但是当我在android平台上运行这个应用程序时(我没有尝试过其他平台),有一个错误“device is not
我是一名优秀的程序员,十分优秀!