mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-11 09:11:14 +08:00
add Clipboard component for ios and android
Summary:
add Clipboard component for ios and android
```javascript
import Clipboard from 'react-native'
Clipboard.get((content)=>{
console.log('here is content in clipboard:%s',content)
});
var content = 'here is a string';
Clipboard.set(content);
```
Closes https://github.com/facebook/react-native/pull/4384
Reviewed By: svcscm
Differential Revision: D2738881
Pulled By: mkonicek
fb-gh-sync-id: a06df32d1eb2824cc9ca3de9d45e4e67fd2edbc9
This commit is contained in:
committed by
facebook-github-bot-4
parent
cd4574498d
commit
90c7ad112f
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
package com.facebook.react.modules.clipboard;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.ClipData;
|
||||
import android.os.Build;
|
||||
|
||||
import com.facebook.common.logging.FLog;
|
||||
import com.facebook.react.bridge.Callback;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||
import com.facebook.react.bridge.ReactMethod;
|
||||
import com.facebook.react.common.ReactConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* A module that allows JS to get/set clipboard contents.
|
||||
*/
|
||||
public class ClipboardModule extends ReactContextBaseJavaModule {
|
||||
|
||||
public ClipboardModule(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Clipboard";
|
||||
}
|
||||
|
||||
private ClipboardManager getClipboardService() {
|
||||
ReactApplicationContext reactContext = getReactApplicationContext();
|
||||
return (ClipboardManager) reactContext.getSystemService(reactContext.CLIPBOARD_SERVICE);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void getString(Callback cb) {
|
||||
try {
|
||||
ClipboardManager clipboard = getClipboardService();
|
||||
ClipData clipData = clipboard.getPrimaryClip();
|
||||
if (clipData == null) {
|
||||
cb.invoke("");
|
||||
return;
|
||||
}
|
||||
if (clipData.getItemCount() >= 1) {
|
||||
ClipData.Item firstItem = clipboard.getPrimaryClip().getItemAt(0);
|
||||
String text = "" + firstItem.getText();
|
||||
cb.invoke(text);
|
||||
} else {
|
||||
cb.invoke("");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
FLog.w(ReactConstants.TAG, "Cannot get clipboard contents: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("DeprecatedMethod")
|
||||
@ReactMethod
|
||||
public void setString(String text) {
|
||||
ReactApplicationContext reactContext = getReactApplicationContext();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
ClipData clipdata = ClipData.newPlainText(null, text);
|
||||
ClipboardManager clipboard = getClipboardService();
|
||||
clipboard.setPrimaryClip(clipdata);
|
||||
} else {
|
||||
ClipboardManager clipboard = getClipboardService();
|
||||
clipboard.setText(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,7 @@ import com.facebook.react.views.toolbar.ReactToolbarManager;
|
||||
import com.facebook.react.views.view.ReactViewManager;
|
||||
import com.facebook.react.views.viewpager.ReactViewPagerManager;
|
||||
import com.facebook.react.views.swiperefresh.SwipeRefreshLayoutManager;
|
||||
import com.facebook.react.modules.clipboard.ClipboardModule;
|
||||
|
||||
/**
|
||||
* Package defining basic modules and view managers.
|
||||
@@ -51,6 +52,7 @@ public class MainReactPackage implements ReactPackage {
|
||||
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
||||
return Arrays.<NativeModule>asList(
|
||||
new AsyncStorageModule(reactContext),
|
||||
new ClipboardModule(reactContext),
|
||||
new FrescoModule(reactContext),
|
||||
new IntentModule(reactContext),
|
||||
new LocationModule(reactContext),
|
||||
|
||||
Reference in New Issue
Block a user