После нескольких часов поиска и тестирования я не могу справиться с этой задачей.
Я пытаюсь передать данные (URL, изображение) из другого приложения -> в мое приложение.
Но мне не удалось найти надлежащую документацию о том, как этого добиться (на Android и iOS), или надежные модули ( response-native-share-extension кажется излишним ине работает с response-native-navigation v2 ( # 139 ) и act-native-share-menu не поддерживается для iOS)
Поговорим немногоЧто касается Android, я обновил свой манифест <intent-filter>
с помощью (кстати, что эквивалентно в iOS?)
<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>
и успешно увидел мое приложение в общей папке другого приложения в списке .... и щелкнув по нему, открывается мое приложение ... check
Теперь мне нужно получить данные о намерениях в моем приложении.Я попытался использовать 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);
}
}
Я пробовал на вышеупомянутом MainActivity решении от Дэйв Беннет , но получил ошибку, которую не удалось устранить (ошибка: метод не переопределяет или не реализует метод изсупертип)
Спасибо за помощь!
------ пакеты
- "реагируют": "16.6.3",
- "Reaction-native": "0.57.8",
- "Reaction-native-navigation": "^ 2.6.0"