
Security News
Nx npm Packages Compromised in Supply Chain Attack Weaponizing AI CLI Tools
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
react-native-file-opener-meifacil
Advanced tools
A React Native module that allows you to open a file (mp3, mp4, pdf, word, excel, dwg etc.) on your device with its default application
A React Native module that allows you to open a file (mp3, mp4, pdf, word, excel, dwg etc.) on your device with its default application
iOS | Android |
---|---|
![]() | ![]() |
##iOS
npm install react-native-file-opener --save
Libraries
folder ➜ Add Files to
node_modules
➜ react-native-file-opener
➜ ios
➜ select RNFileOpener.xcodeproj
libRNFileOpener.a
to Build Phases -> Link Binary With Libraries
##Android
npm install react-native-file-opener --save
// file: android/settings.gradle
...
include ':react-native-file-opener'
project(':react-native-file-opener').projectDir = new File(settingsDir, '../node_modules/react-native-file-opener/android')
// file: android/app/build.gradle
...
dependencies {
...
compile project(':react-native-file-opener')
}
// file: MainActivity.java
import com.fileopener.FileOpenerPackage; // <- import
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage(new FileOpenerPackage()) // <- add package
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);
setContentView(mReactRootView);
}
...
}
// file: MainActivity.java
...
import com.fileopener.FileOpenerPackage;//<- import package
public class MainActivity extends ReactActivity {
/**
* A list of packages used by the app. If the app uses additional views
* or modules besides the default ones, add more packages here.
*/
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(), //<- Add comma
new FileOpenerPackage() //<- Add package
);
}
...
}
###Allow files access
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
...>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
...
</application>
</manifest>
"path" attribute must contain the directory name.
For setting up other directories (cache, external storage, ...) follow the guide at https://developer.android.com/reference/android/support/v4/content/FileProvider.html
<paths xmlns:android="http://schemas.android.com/apk/res/android">
...
<files-path name="img" path="images/"/>
...
</paths>
##Usage
const FileOpener = require('react-native-file-opener');
const FilePath = ...; // path of the file
const FileMimeType = ...; // mime type of the file
FileOpener.open(
FilePath,
FileMimeType
).then((msg) => {
console.log('success!!')
},() => {
console.log('error!!')
});
##Usage with react-native-fs
const RNFS = require('react-native-fs');
const FileOpener = require('react-native-file-opener');
const SavePath = Platform.OS === 'ios' ? RNFS.DocumentDirectoryPath : RNFS.ExternalDirectoryPath;
const sampleDocFilePath = SavePath + '/sample.doc';
...
function openSampleDoc() {
FileOpener.open(
sampleDocFilePath,
'application/msword'
).then(() => {
console.log('success!!');
},(e) => {
console.log('error!!');
});
}
...
##Demo project https://github.com/huangzuizui/react-native-file-opener-demo
FAQs
A React Native module that allows you to open a file (mp3, mp4, pdf, word, excel, dwg etc.) on your device with its default application
We found that react-native-file-opener-meifacil demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.