下面列出了怎么用com.facebook.react.bridge.Callback的API类实例代码及写法,或者点击链接到github查看源代码。
private CropTask(
ReactContext context,
String uri,
int x,
int y,
int width,
int height,
Callback success,
Callback error) {
super(context);
if (x < 0 || y < 0 || width <= 0 || height <= 0) {
throw new JSApplicationIllegalArgumentException(String.format(
"Invalid crop rectangle: [%d, %d, %d, %d]", x, y, width, height));
}
mContext = context;
mUri = uri;
mX = x;
mY = y;
mWidth = width;
mHeight = height;
mSuccess = success;
mError = error;
}
public void clearCookies(final Callback callback) {
if (USES_LEGACY_STORE) {
new GuardedResultAsyncTask<Boolean>(mContext) {
@Override
protected Boolean doInBackgroundGuarded() {
getCookieManager().removeAllCookie();
mCookieSaver.onCookiesModified();
return true;
}
@Override
protected void onPostExecuteGuarded(Boolean result) {
callback.invoke(result);
}
}.execute();
} else {
clearCookiesAsync(callback);
}
}
/**
* 进行网络请求
*/
@ReactMethod
public void getSearchInfo(String url, ReadableMap params, ReadableMap cookie, Callback callback1, final Callback callback2) {
final WritableNativeMap map = new WritableNativeMap();
HttpUtil.PostUrl(url, params.toHashMap(), cookie.toHashMap(), new ProtocolCallback.UnitCallback<String>() {
@Override
public void onCompleted(String s) {
map.putBoolean("isOk", true);
map.putString("responseJson", s);
callback2.invoke(map);
}
@Override
public void onFailure(String errMsg) {
map.putBoolean("isOk", false);
map.putString("message", errMsg);
callback2.invoke(map);
}
});
//
}
@ReactMethod
public void setServiceState(final ReadableMap map, final Callback callback) {
if (map == null) {
return;
}
final String st = map.getString("state");
final String sid = map.getString("sid");
ThirdProviderAPI.setServiceStatus(CurrentPreference.getInstance().getUserid(), st, sid, new ProtocolCallback.UnitCallback<Boolean>() {
@Override
public void onCompleted(Boolean aBoolean) {
WritableNativeMap writableNativeMap = new WritableNativeMap();
writableNativeMap.putBoolean("result", aBoolean);
callback.invoke(writableNativeMap);
}
@Override
public void onFailure(String errMsg) {
}
});
}
/**
* 获取用户信息
*
* @param userId
* @param callback
*/
@ReactMethod
public void getUserInfo(final String userId, final Callback callback) {
ConnectionUtil.getInstance().getUserCard(userId, new IMLogicManager.NickCallBack() {
@Override
public void onNickCallBack(Nick nick) {
WritableMap hm = new WritableNativeMap();
hm.putString("Name", nick.getName());
hm.putString("Remarks", nick.getMark());
hm.putString("HeaderUri", nick.getHeaderSrc());
hm.putString("Department", nick.getDescInfo());
hm.putString("UserId", nick.getXmppId());
WritableNativeMap map = new WritableNativeMap();
map.putMap("UserInfo", hm);
callback.invoke(map);
}
}, false, true);
}
@ReactMethod
public void readSleep(double startDate, double endDate, Callback error, Callback success) {
HealthDataResolver resolver = new HealthDataResolver(mStore, null);
Filter filter = Filter.and(
Filter.greaterThanEquals(HealthConstants.Sleep.START_TIME, (long)startDate),
Filter.lessThanEquals(HealthConstants.Sleep.END_TIME, (long)endDate)
);
HealthDataResolver.ReadRequest request = new ReadRequest.Builder()
.setDataType(HealthConstants.Sleep.HEALTH_DATA_TYPE)
.setProperties(new String[]{
HealthConstants.Sleep.START_TIME,
HealthConstants.Sleep.END_TIME,
HealthConstants.Sleep.TIME_OFFSET,
HealthConstants.Sleep.DEVICE_UUID
})
.setFilter(filter)
.build();
try {
resolver.read(request).setResultListener(new HealthDataResultListener(this, error, success));
} catch (Exception e) {
Log.e(REACT_MODULE, e.getClass().getName() + " - " + e.getMessage());
Log.e(REACT_MODULE, "Getting Sleep fails.");
error.invoke("Getting Sleep fails.");
}
}
/**
* 同步在线通知状态
*
* @param callback
*/
@ReactMethod
public void syncOnLineNotifyState(Callback callback) {
// CurrentPreference.ProFile proFile = CurrentPreference.getInstance().getProFile();
// WritableMap map = new WritableNativeMap();
//// WritableMap params = new WritableNativeMap();
//// params.putBoolean("syncOnLineNotifyState",proFile.isOfflinePush());
// map.putBoolean("state", proFile.isOfflinePush());
// callback.invoke(map);
WritableMap map = new WritableNativeMap();
boolean state = ConnectionUtil.getInstance().getPushStateBy(PushSettinsStatus.PUSH_ONLINE);
map.putBoolean("state", state);
callback.invoke(map);
}
/**
* 根据文字搜索联系人
*
* @param params
* @param callback
*/
@ReactMethod
public void selectUserListByText(ReadableMap params, Callback callback) {
String groupId = params.getString("groupId");
String searchText = params.getString("searchText");
List<Nick> userList = ConnectionUtil.getInstance().SelectUserListBySearchText(groupId, searchText);
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < userList.size(); i++) {
Nick nick = userList.get(i);
WritableNativeMap map = new WritableNativeMap();
map.putString("name", TextUtils.isEmpty(nick.getName()) ? nick.getXmppId() : nick.getName());
map.putString("xmppId", nick.getXmppId());
map.putString("headerUri", TextUtils.isEmpty(nick.getHeaderSrc()) ? defaultUserImage : nick.getHeaderSrc());
map.putBoolean("hasInGroup", nick.isInGroup());
map.putString("desc",nick.getDescInfo());
array.pushMap(map);
}
WritableNativeMap re = new WritableNativeMap();
re.putArray("UserList", array);
re.putBoolean("ok", true);
callback.invoke(re);
}
@ReactMethod
public void selectGroupMemberForKick(ReadableMap params, Callback callback) {
String groupId = params.getString("groupId");
List<Nick> userList = ConnectionUtil.getInstance().selectGroupMemberForKick(groupId);
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < userList.size(); i++) {
Nick nick = userList.get(i);
WritableNativeMap map = new WritableNativeMap();
map.putString("name", TextUtils.isEmpty(nick.getName()) ? nick.getXmppId() : nick.getName());
map.putString("xmppId", nick.getXmppId());
map.putString("headerUri", TextUtils.isEmpty(nick.getHeaderSrc()) ? defaultUserImage : nick.getHeaderSrc());
array.pushMap(map);
}
WritableNativeMap re = new WritableNativeMap();
re.putArray("UserList", array);
re.putBoolean("ok", true);
callback.invoke(re);
}
/**
* 群踢人
*
* @param params
*/
@ReactMethod
public void kickGroupMember(ReadableMap params, Callback callback) {
final String groupId = params.getString("groupId");
ReadableMap map = params.getMap("members");
ReadableMapKeySetIterator keySet = map.keySetIterator();
Map<String, String> memberMap = new HashMap<>();
while (keySet.hasNextKey()) {
ReadableMap item = map.getMap(keySet.nextKey());
String userId = item.getString("xmppId");
String name = item.getString("name");
memberMap.put(name, userId);
}
if (TextUtils.isEmpty(groupId) || memberMap.size() == 0) {
return;
}
ConnectionUtil.getInstance().delGroupMember(groupId, memberMap);
sendEvent("closeKickMembers", new WritableNativeMap());
toast("成员已移除");
}
/**
* 同步群置顶信息
*
* @param groupId
* @param callback
*/
@ReactMethod
public void syncGroupStickyState(String groupId, Callback callback) {
// RecentConversation rc = new RecentConversation();
// rc.setId(groupId);
// rc.setRealUser(groupId);
// rc = ConnectionUtil.getInstance().SelectConversationByRC(rc);
UserConfigData userConfigData = new UserConfigData();
userConfigData.setSubkey(groupId + "<>" + groupId);
userConfigData.setKey(CacheDataType.kStickJidDic);
UserConfigData ucd = ConnectionUtil.getInstance().selectUserConfigValueForKey(userConfigData);
// recentConvDataModel.selectRecentConvById(rc);
// panelView.setTop(rc.getTop()>0);
WritableNativeMap map = new WritableNativeMap();
map.putBoolean("state", ucd != null);
callback.invoke(map);
}
/**
* 查询不在星标联系人的好友
*
* @param callback
*/
@ReactMethod
public void selectFriendsNotInStarContacts(Callback callback) {
List<Nick> list = IMDatabaseManager.getInstance().selectFriendsNotInStarContacts();
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < list.size(); i++) {
Nick nick = list.get(i);
WritableNativeMap map = new WritableNativeMap();
map.putString("Name", TextUtils.isEmpty(nick.getName()) ? nick.getXmppId() : nick.getName());
map.putString("XmppId", nick.getXmppId());
map.putString("HeaderUri", TextUtils.isEmpty(nick.getHeaderSrc()) ? defaultUserImage : nick.getHeaderSrc());
array.pushMap(map);
}
WritableNativeMap re = new WritableNativeMap();
re.putArray("contacts", array);
callback.invoke(re);
}
@ReactMethod
public void selectUserNotInStartContacts(String key, Callback callback) {
List<Nick> list = IMDatabaseManager.getInstance().selectUserNotInStartContacts(key);
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < list.size(); i++) {
Nick nick = list.get(i);
WritableNativeMap map = new WritableNativeMap();
map.putString("Name", TextUtils.isEmpty(nick.getName()) ? nick.getXmppId() : nick.getName());
map.putString("XmppId", nick.getXmppId());
map.putString("HeaderUri", TextUtils.isEmpty(nick.getHeaderSrc()) ? defaultUserImage : nick.getHeaderSrc());
array.pushMap(map);
}
WritableNativeMap re = new WritableNativeMap();
re.putArray("users", array);
callback.invoke(re);
}
@ReactMethod
public void selectStarOrBlackContacts(String pkey, Callback callback) {
List<Nick> list = IMDatabaseManager.getInstance().selectStarOrBlackContactsAsNick(pkey);
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < list.size(); i++) {
Nick nick = list.get(i);
WritableNativeMap map = new WritableNativeMap();
map.putString("Name", TextUtils.isEmpty(nick.getName()) ? nick.getXmppId() : nick.getName());
map.putString("XmppId", nick.getXmppId());
map.putString("HeaderUri", TextUtils.isEmpty(nick.getHeaderSrc()) ? defaultUserImage : nick.getHeaderSrc());
array.pushMap(map);
}
WritableNativeMap re = new WritableNativeMap();
re.putArray("data", array);
callback.invoke(re);
}
/**
* Clears the database.
*/
@ReactMethod
public void clear(final Callback callback) {
new GuardedAsyncTask<Void, Void>(getReactApplicationContext()) {
@Override
protected void doInBackgroundGuarded(Void... params) {
if (!mReactDatabaseSupplier.ensureDatabase()) {
callback.invoke(AsyncStorageErrorUtil.getDBError(null));
return;
}
try {
mReactDatabaseSupplier.clear();
callback.invoke();
} catch (Exception e) {
FLog.w(ReactConstants.TAG, e.getMessage(), e);
callback.invoke(AsyncStorageErrorUtil.getError(null, e.getMessage()));
}
}
}.executeOnExecutor(executor);
}
@ReactMethod
public void sendSignal(String sessionId, ReadableMap signal, Callback callback) {
ConcurrentHashMap<String, Session> mSessions = sharedState.getSessions();
Session mSession = mSessions.get(sessionId);
ConcurrentHashMap<String, Connection> mConnections = sharedState.getConnections();
String connectionId = signal.getString("to");
Connection mConnection = null;
if (connectionId != null) {
mConnection = mConnections.get(connectionId);
}
if (mConnection != null && mSession != null) {
mSession.sendSignal(signal.getString("type"), signal.getString("data"), mConnection);
callback.invoke();
} else if (mSession != null) {
mSession.sendSignal(signal.getString("type"), signal.getString("data"));
callback.invoke();
} else {
WritableMap errorInfo = EventUtils.createError("There was an error sending the signal. The native session instance could not be found.");
callback.invoke(errorInfo);
}
}
@ReactMethod
public void readHeight(double startDate, double endDate, Callback error, Callback success) {
HealthDataResolver resolver = new HealthDataResolver(mStore, null);
Filter filter = Filter.and(
Filter.greaterThanEquals(HealthConstants.Height.START_TIME, (long)startDate),
Filter.lessThanEquals(HealthConstants.Height.START_TIME, (long)endDate)
);
HealthDataResolver.ReadRequest request = new ReadRequest.Builder()
.setDataType(HealthConstants.Height.HEALTH_DATA_TYPE)
.setProperties(new String[]{
HealthConstants.Height.HEIGHT,
HealthConstants.Height.START_TIME,
HealthConstants.Height.TIME_OFFSET,
HealthConstants.Height.DEVICE_UUID
})
.setFilter(filter)
.build();
try {
resolver.read(request).setResultListener(new HealthDataResultListener(this, error, success));
} catch (Exception e) {
Log.e(REACT_MODULE, e.getClass().getName() + " - " + e.getMessage());
Log.e(REACT_MODULE, "Getting Height fails.");
error.invoke("Getting Height fails.");
}
}
public SingleLocationUpdate(
FusedLocationProviderClient fusedLocationProviderClient,
LocationRequest locationRequest,
long timeout,
Callback success,
Callback error
) {
mFusedProviderClient = fusedLocationProviderClient;
mLocationRequest = locationRequest;
mTimeout = timeout;
mSuccessCallback = success;
mErrorCallback = error;
}
private void onCallback(Intent intent) {
// Define callback
Callback callback = null;
if (intent.hasExtra("callback_id")) {
int id = intent.getIntExtra("callback_id", -1);
if (callbacks.containsKey(id)) {
callback = callbacks.remove(id);
} else {
Log.w(TAG, "Callback with \""+ id +"\" identifier not found (\""+ intent.getAction() +"\")");
}
}
if (callback == null) {
return;
}
// -----
if (intent.hasExtra("exception")) {
Log.w(TAG, "Callback executed with exception state: " + intent.getStringExtra("exception"));
callback.invoke(false, intent.getStringExtra("exception"));
} else if (intent.hasExtra("data")) {
Object params = ArgumentUtils.fromJson(intent.getStringExtra("data"));
callback.invoke(true, params);
} else {
callback.invoke(true, true);
}
}
@ReactMethod
public void getSafeAreaInsets(Callback cb) {
Map<String, Object> constants = this._getSafeAreaInsets();
WritableMap map = new WritableNativeMap();
map.putInt("safeAreaInsetsTop", ((Float) constants.get("safeAreaInsetsTop")).intValue());
map.putInt("safeAreaInsetsBottom", ((Float) constants.get("safeAreaInsetsBottom")).intValue());
map.putInt("safeAreaInsetsLeft", ((Float) constants.get("safeAreaInsetsLeft")).intValue());
map.putInt("safeAreaInsetsRight", ((Float) constants.get("safeAreaInsetsRight")).intValue());
cb.invoke(map);
}
@ReactMethod
public void enable(Callback success, Callback error) {
if(hotspot.isEnabled()) {
success.invoke();
}
else
error.invoke("Hotspot already running");
}
public ConnectionListener(SamsungHealthModule module, Callback error, Callback success)
{
mModule = module;
mErrorCallback = error;
mSuccessCallback = success;
mKeySet = new HashSet<PermissionKey>();
}
/**
* 浏览大图 图片
*
* @param params imageUrl为图片地址
* @param callback
*/
@ReactMethod
public void browseBigImage(ReadableMap params, Callback callback) {
if (params.hasKey("imageUrl")) {
String imageUrl = params.getString("imageUrl");
if (TextUtils.isEmpty(imageUrl)) {
} else {
NativeApi.openBigImage(imageUrl, MyDiskCache.getSmallFile(imageUrl + "&w=96&h=96").getAbsolutePath());
}
}
}
@ReactMethod
public void peersList(final Callback success,final Callback error) {
hotspot.setPeersCallback(new HotspotManager.peersList() {
@Override
public void onPeersScanned(ArrayList<ClientScanResult> peers) {
if(!peers.isEmpty()) {
JSONArray arrayOfPeers = new JSONArray();
int count = 1;
for(ClientScanResult peer: peers) {
JSONObject object = new JSONObject();
try {
object.put("ip", peer.getIpAddr());
object.put("mac", peer.getHWAddr());
peer.setDevice("Device "+(count++)+"");
object.put("device", peer.getDevice());
} catch(JSONException e) {
error.invoke("Fetching has failed");
}
arrayOfPeers.put(object);
}
success.invoke(arrayOfPeers.toString());
} else {
error.invoke("Hotspot is empty");
}
}
});
}
/**
* Determines the location on screen, width, and height of the given view relative to the root
* view and returns the values via an async callback.
*/
public void measure(int reactTag, Callback callback) {
// This method is called by the implementation of JS touchable interface (see Touchable.js for
// more details) at the moment of touch activation. That is after user starts the gesture from
// a touchable view with a given reactTag, or when user drag finger back into the press
// activation area of a touchable view that have been activated before.
mOperationsQueue.enqueueMeasure(reactTag, callback);
}
@ReactMethod
public void getLocalSearchKeyHistory(ReadableMap params,Callback callback){
int limit = 5;
int type = 0 ;
List<SearchKeyData> list =IMDatabaseManager.getInstance().getLocalSearchKeyHistory(type ,limit);
WritableNativeMap map = new WritableNativeMap();
map.putBoolean("isOk",true);
WritableNativeArray array = new WritableNativeArray();
for (int i = 0; i < list.size(); i++) {
array.pushString(list.get(i).getSearchKey());
}
map.putArray("searchKeys",array);
callback.invoke(map);
}
@ReactMethod
public void isAppInstalled(String packageName, Callback cb) {
try {
PackageInfo pInfo = this.reactContext.getPackageManager().getPackageInfo(packageName,
PackageManager.GET_ACTIVITIES);
cb.invoke(true);
} catch (PackageManager.NameNotFoundException e) {
cb.invoke(false);
}
}
/**
* 检查该用户此时间段内是否有冲突会议
*
* @param params
* @param callback
*/
@ReactMethod
public void tripMemberCheck(final ReadableMap params, final Callback callback) {
String checkId = params.getString("checkId");
String beginTime = params.getString("beginTime");
String endTime = params.getString("endTime");
CalendarTrip.DataBean.TripsBean bean = new CalendarTrip.DataBean.TripsBean();
bean.setCheckId(checkId);
bean.setBeginTime(beginTime);
bean.setEndTime(endTime);
final WritableNativeMap map = new WritableNativeMap();
HttpUtil.tripMemberCheck(bean, new ProtocolCallback.UnitCallback<TripMemberCheckResponse>() {
@Override
public void onCompleted(TripMemberCheckResponse tripMemberCheckResponse) {
map.putBoolean("ok", true);
map.putBoolean("isConform", tripMemberCheckResponse.getData().isIsConform());
callback.invoke(map);
}
@Override
public void onFailure(String errMsg) {
map.putBoolean("ok", false);
callback.invoke(map);
}
});
}
@ReactMethod
public void updateRemoteKey(Callback callback) {
WritableNativeMap map = new WritableNativeMap();
String newKey = IMLogicManager.getInstance().getRemoteLoginKey(true);
if (!TextUtils.isEmpty(newKey)) {
map.putBoolean("ok", true);
} else {
map.putBoolean("ok", false);
}
callback.invoke(map);
}
/**
* 获取用户签名
*
* @param userId
* @param callback
*/
@ReactMethod
public void getUserMood(final String userId, final Callback callback) {
// VCardAPI.getUserProfile(userId, new ProtocolCallback.UnitCallback<GetMoodResult>() {
// @Override
// public void onCompleted(GetMoodResult getMoodResult) {
// if (getMoodResult.ret) {
// String mood = "这家伙很懒,什么都没留下";
// if (!ListUtil.isEmpty(getMoodResult.data)) {
// mood = getMoodResult.data.get(0).M;
// }
// WritableMap hm = new WritableNativeMap();
// hm.putString("Mood", mood);
// WritableNativeMap map = new WritableNativeMap();
// map.putMap("UserInfo", hm);
// callback.invoke(map);
// }
// }
//
// @Override
// public void onFailure(String errMsg) {
// String mood = "这家伙很懒,什么都没留下";
// WritableMap hm = new WritableNativeMap();
// hm.putString("Mood", mood);
// WritableNativeMap map = new WritableNativeMap();
// map.putMap("UserInfo", hm);
// callback.invoke(map);
// }
// });
// callback.invoke(null);
}