mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-10 09:12:46 +08:00
Return a Promise for Clipboard.getString()
Summary:
For clipboard, add error callback in Android. Code like
```javascript
Clipboard.getString((content)=>{
//do something
},(error)=>{
//do something for error
})
```
Closes https://github.com/facebook/react-native/pull/4792
Reviewed By: svcscm
Differential Revision: D2844937
Pulled By: nicklockwood
fb-gh-sync-id: 19953807ff07238e6a6ef5aedf1a3fcbca7e62a1
This commit is contained in:
committed by
facebook-github-bot-5
parent
1dffd056bf
commit
15f806957f
@@ -21,6 +21,7 @@ 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.bridge.Promise;
|
||||
import com.facebook.react.common.ReactConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -43,28 +44,25 @@ public class ClipboardModule extends ReactContextBaseJavaModule {
|
||||
}
|
||||
|
||||
private ClipboardManager getClipboardService() {
|
||||
ReactApplicationContext reactContext = getReactApplicationContext();
|
||||
return (ClipboardManager) reactContext.getSystemService(reactContext.CLIPBOARD_SERVICE);
|
||||
return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void getString(Callback cb) {
|
||||
public void getString(Promise promise){
|
||||
try {
|
||||
ClipboardManager clipboard = getClipboardService();
|
||||
ClipData clipData = clipboard.getPrimaryClip();
|
||||
if (clipData == null) {
|
||||
cb.invoke("");
|
||||
return;
|
||||
promise.resolve("");
|
||||
}
|
||||
if (clipData.getItemCount() >= 1) {
|
||||
ClipData.Item firstItem = clipboard.getPrimaryClip().getItemAt(0);
|
||||
String text = "" + firstItem.getText();
|
||||
cb.invoke(text);
|
||||
promise.resolve("" + firstItem.getText());
|
||||
} else {
|
||||
cb.invoke("");
|
||||
promise.resolve("");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
FLog.w(ReactConstants.TAG, "Cannot get clipboard contents: " + e.getMessage());
|
||||
promise.reject(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user