经过数小时的搜索和测试,我无法应对这个挑战。
我正在尝试从另一个应用程序->与我的应用程序共享数据(URL,图像)。
但是我无法找到有关如何实现此目标的适当文档(在Android和iOS上),或者无法找到可靠的模块(react-native-share-extension似乎是过大的选择,不适用于react-native-navigation v2({{ 3}})和#139(不适用于iOS)
让我们谈谈Android,我确实使用(顺便说一句,iOS中的等效功能是)更新了清单<intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
<data android:mimeType="text/plain" />
</intent-filter>
并成功在其他应用程序的共享到列表中看到我的应用程序...单击它打开我的应用程序... 检查
现在我需要在我的应用程序中实际获取意图数据。我尝试从react-native使用Linking
,但未成功,但没有任何控制台日志。
下面是我的代码,我要丢失什么,或者我应该为我的Android和iOS项目做什么以获取意图数据?
index.js
import App from './App';
App.js
import { persistStore } from 'redux-persist';
import { Navigation } from "react-native-navigation";
import { Linking } from 'react-native';
// other imports ...
// [...]
const handleOpenURL = (event) => {
console.log(event.url);
};
Linking.addEventListener('url', handleOpenURL);
Linking.getInitialURL().then((url) => {
if (url) {
console.log('Initial url is: ' + url);
}
}).catch(err => console.error('An error occurred', err));
Navigation.events().registerAppLaunchedListener(() => {
persistStore(store, null, () => {
// Register Screens ...
Navigation.setRoot({
// Setting root to home page (home.js)
Home.js //也在那里尝试过
// imports
class Home extends Component {
//...
_handleOpenURL(event) {
console.log(event.url);
};
componentDidMount() {
Linking.addEventListener('url', this._handleOpenURL);
Linking.getInitialURL().then((url) => {
if (url) {
console.log('Initial url is: ' + url);
}
}).catch(err => console.error('An error occurred', err));
}
MainActivity.java //这可能是我缺少诸如getIntent()之类的东西的地方?
package com.my.app;
import com.imagepicker.permissions.OnImagePickerPermissionsCallback;
import com.facebook.react.modules.core.PermissionListener;
import com.reactnativenavigation.NavigationActivity;
public class MainActivity extends NavigationActivity implements OnImagePickerPermissionsCallback {
private PermissionListener listener;
@Override
public void setPermissionListener(PermissionListener listener) {
this.listener = listener;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (listener != null) {
listener.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
我尝试了上述react-native-share-menu的 MainActivity 解决方案,但是遇到了我无法解决的错误(错误:方法未覆盖或实现超类型的方法)
感谢您的帮助!
------软件包