- 浏览: 130511 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
酱油党:
你这个方法只能截当前activity,想要截取任意地方,怎么办 ...
全屏截图 -
月下独酌:
sxchao2008 写道/sdcard/cacerts.bk ...
android https之二 -
sxchao2008:
/sdcard/cacerts.bks 这个证书可以到网上随便 ...
android https之二 -
月下独酌:
Rhamiss 写道请问这是从sdcard安装ca证书的源代码 ...
android https之三 -
月下独酌:
Rhamiss 写道请问这是从sdcard安装ca证书的源代码 ...
android https之三
在应用程序中可以通过此工具类与android系统native服务通信
这些native服务是指在init.rc中定义的随机启动的服务,如zygote
但是如需要通过此工具类来启动和停止系统服务,需要具有system权限
即需要设置sharedUId=system
这些native服务是指在init.rc中定义的随机启动的服务,如zygote
但是如需要通过此工具类来启动和停止系统服务,需要具有system权限
即需要设置sharedUId=system
import android.net.LocalSocket; import android.net.LocalSocketAddress; import android.net.vpn.VpnManager; import android.os.SystemProperties; import android.util.Log; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Serializable; class Command implements Serializable { private static final long serialVersionUID = 1L; private static final boolean DBG = true; private static final int WAITING_TIME = 15; // sec private static final String SVC_STATE_CMD_PREFIX = "init.svc."; private static final String SVC_START_CMD = "ctl.start"; private static final String SVC_STOP_CMD = "ctl.stop"; private static final String SVC_STATE_RUNNING = "running"; private static final String SVC_STATE_STOPPED = "stopped"; private static final int END_OF_ARGUMENTS = 255; private String mName; private String mTag; private transient LocalSocket mControlSocket; /** * Creates a proxy of the specified daemon. * @param daemonName name of the daemon */ UsbMacCommand(String daemonName) { mName = daemonName; mTag = "UsbMacCommand"; } void start() throws IOException { String svc = mName; if (DBG) Log.i(mTag, "Start usbmac native server " + svc); SystemProperties.set(SVC_START_CMD, svc); if (!blockUntil(SVC_STATE_RUNNING, WAITING_TIME)) { //if running if (DBG) Log.i(mTag, "cannot start service: " + svc); throw new IOException("cannot start service: " + svc); } else { mControlSocket = createServiceSocket(); } } int sendCommand(String ...args) throws IOException { if (DBG) Log.i(mTag,"sendCommand begin"); OutputStream out = getControlSocketOutput(); for (String arg : args) outputString(out, arg); out.write(END_OF_ARGUMENTS); out.flush(); int result = getResultFromSocket(true); if (DBG) Log.i(mTag,"sendCommand return:" + (char)result + "," + result); return result; } // returns 0 if nothing is in the receive buffer int getResultFromSocket() throws IOException { return getResultFromSocket(false); } void closeControlSocket() { if (mControlSocket == null) return; try { mControlSocket.close(); } catch (IOException e) { if (DBG) Log.w(mTag, "close control socket", e); } finally { mControlSocket = null; } } boolean stop() { String svc = mName; if (DBG) Log.i(mTag, "stop usbmac server: " + svc); SystemProperties.set(SVC_STOP_CMD, svc); boolean success = blockUntil(SVC_STATE_STOPPED, 5); if (DBG) Log.i(mTag, "stopping " + svc + " success = " + success); return success; } boolean isStopped() { String cmd = SVC_STATE_CMD_PREFIX + mName; return SVC_STATE_STOPPED.equals(SystemProperties.get(cmd)); } private int getResultFromSocket(boolean blocking) throws IOException { LocalSocket s = mControlSocket; if (s == null) return 0; InputStream in = s.getInputStream(); if (!blocking && in.available() == 0) return 0; int data = in.read(); return data; } private LocalSocket createServiceSocket() throws IOException { LocalSocket s = new LocalSocket(); LocalSocketAddress a = new LocalSocketAddress(mName, LocalSocketAddress.Namespace.RESERVED); // try a few times in case the service has not listen()ed IOException excp = null; for (int i = 0; i < 10; i++) { try { s.connect(a); return s; } catch (IOException e) { if (DBG) Log.w(mTag, "service not yet listen()ing; try again"); excp = e; sleep(500); } } throw excp; } private OutputStream getControlSocketOutput() throws IOException { if (mControlSocket != null) { return mControlSocket.getOutputStream(); } else { throw new IOException("no control socket available"); } } /** * Waits for the process to be in the expected state. The method returns * false if after the specified duration (in seconds), the process is still * not in the expected state. */ private boolean blockUntil(String expectedState, int waitTime) { String cmd = SVC_STATE_CMD_PREFIX + mName; int sleepTime = 200; // ms int n = waitTime * 1000 / sleepTime; for (int i = 0; i < n; i++) { if (expectedState.equals(SystemProperties.get(cmd))) { if (DBG) { Log.i(mTag, mName + " is " + expectedState + " after " + (i * sleepTime) + " msec"); } break; } sleep(sleepTime); } return expectedState.equals(SystemProperties.get(cmd)); } private void outputString(OutputStream out, String s) throws IOException { byte[] bytes = s.getBytes(); out.write(bytes.length); out.write(bytes); out.flush(); } private void sleep(int msec) { try { Thread.currentThread().sleep(msec); } catch (InterruptedException e) { throw new RuntimeException(e); } } }
发表评论
-
侧滑优化版本
2017-12-25 21:44 0import android.animation.Object ... -
RectRelativeLayout
2016-04-18 22:23 0package ui; import android.con ... -
ScrollView源码
2015-07-26 22:21 0package com.example.myapp.view; ... -
jumpToH5orNative
2015-06-09 17:48 0function jumpToH5orNative() { ... -
FloatWindowManager
2015-05-29 16:35 0package com.thestore.main.core. ... -
Activity亲和栈问题
2015-05-27 00:32 01、如果将要打开的目标Activity是SingleTask或 ... -
QQ5.0侧滑效果
2015-05-22 19:09 0package com.example.jobtest.qql ... -
水滴效果
2015-05-22 14:47 0package com.example.pluginmain; ... -
Android插件开发框架、源码、原理及重点介绍
2015-05-04 17:23 4184https://github.com/limpoxe/Andr ... -
android 动态加载 插件开发 可以加载插件资源文件
2014-06-17 15:27 0android 动态加载 插件开发 可以加载插件资源文件 -
android https之四
2012-10-16 17:05 0private static String[] printC ... -
时间格式化
2012-10-12 14:49 0Locale.setDefault(new Locale( ... -
webview
2012-10-08 10:35 0package com.android.test; im ... -
popUp window
2012-09-21 13:15 0// 创建一个包含自定义view的PopupWindow ... -
ViewPager
2012-09-05 12:00 0package com.android.test; ... -
PinnedHeaderListView
2012-09-05 11:48 0/* * Copyright (C) 2007 The ... -
滑动切屏的指示器
2012-08-01 10:38 0/* * Copyright (C) 2011 Pat ... -
listview 长度自适应
2012-07-27 17:14 0import android.view.View; im ... -
滑动切屏 slidelayout launcher workspace
2012-07-25 18:36 0import android.content.Contex ... -
android定位
2012-07-24 15:57 0private static String getLo ...
相关推荐
通过Socket.io与Node.js进行React Native通信的工作演示。这是在采用另一个项目之前将RN应用程序与Socket.io链接的试验。 怎么跑 Node.js服务器: 需要Node.js,Express.js,Socket.io,Ngrok CD服务器 DEBUG =...
React-native-chat-app 使用socket.ioReact本机简单聊天应用程序。 截屏 聊天画面 服务器入门 要获得有关Socket.io入门的帮助,请查看在线。 1. 2.克隆存储库 $ ...
在客户端,你可以使用`socket.io-client`库,这个库通常用于JavaScript运行环境,如浏览器或React Native等,但也有针对Java和Android的实现,如你提到的`socket.io-client-0.5.0.jar`。 在Java或Android项目中,`...
在framework层,由于涉及到更底层的操作,通常我们会使用JNI(Java Native Interface)配合C/C++代码来创建Socket服务器。首先,在JNI方法中调用`socket()`创建一个监听套接字,并使用`bind()`和`listen()`设置监听...
React-Native-Chat-App是一个基于React Native框架构建的移动聊天应用示例,结合了Socket.io、ExpressJS和MongoDB来实现实时通信和数据存储。这个项目不仅展示了React Native在跨平台移动开发中的强大功能,还揭示了...
You’ll also build server-side code for a mobile React Native app to talk to using the popular Node.js and Socket.io library, providing you a holistic view of things even beyond React Native....
《探花交友APP:基于React-Native框架的开发实践》 React-Native是Facebook推出的一款开源框架,它允许开发者使用JavaScript编写原生移动应用。在本文中,我们将深入探讨如何利用React-Native来构建“探花交友APP”...
【速捷即时通讯(speedy-im):基于uni-app与uni-socket.io的构建】 speedy-im是一个已停止更新的即时通讯项目,它利用了uni-app框架和uni-socket.io库来实现跨平台的实时通信功能。uni-app是一个由ECharts团队开发...
然而,由于其非原生的特性,可能会遇到性能问题,这在React Native、Flutter等框架中也同样存在。本文将探讨uni-app的运行原理,以及如何从这些原理出发解决性能优化问题。 首先,uni-app的运行机制涉及到逻辑层和...
My-React-Native-App 基于expo搭建的React Native+Node.js+ts仿闲鱼(项目代号:闲猪)项目 技术栈 前端采用ts,基于搭建(通用的React应用程序框架和平台,围绕React Native和native平台的工具集),表单采用,状态...
本项目“chat-app-react-native”是一个基于React Native的实时聊天应用程序,它展示了如何利用JavaScript和React Native的组件化思想来创建一个功能完备的聊天应用。下面,我们将详细探讨这个项目中的关键技术和...
该存储库涵盖了使用React Native和MERN堆栈实现的3个主要平台的主要是Android,IOS和Web :fire: 。您可以在此存储库中看到以下功能正在运行, 即时和实时文本一对一聊天用户的在线/离线可用性上次查看时间未读邮件...
npx react-native init mobile-chat-app --template react-native-template-typescript ``` 这会生成一个预配置的项目,已经包含了TypeScript的支持。 ### 4. 设计UI组件 聊天应用的核心组件可能包括:输入框、...
使用React和socket.io聊天应用程序这个应用程序是基本的聊天应用程序,不包含数据库,它是React和socket.io的重点开始安装 git clone ... 有两个文件需要正确如下src / components / Main.js --->...
Web App开发成本低、迭代快,更新方便,但受限于浏览器实现,性能和高级功能(如相机、重力感应等)可能不如Native App。Native App能充分利用设备硬件,提供更好的性能和用户体验,但需要针对不同平台进行开发,成...
目录构建世博会的“独立”应用从Create React Native App弹出构建依赖关系(Xcode和Android Studio) 我应该使用ExpoKit吗? 故障排除联网iOS模拟器无法打开QR码不扫描 更新到新版本您只需要很少(理想情况下永远不...
该示例已移至。 这是一个示例程序,显示了如何使用从... 编辑app.py和app_mysql.py的unix_socket ,以指向与您在步骤1中使用的应用程序相关联的Cloud SQL实例。 上载应用: appcfg.py update .贡献变化参见发牌参见
- **Socket.IO**:基于WebSocket的一个JavaScript库,它可以轻松地在浏览器和Node.js之间建立实时双向事件驱动的通信,广泛应用于即时通讯应用的开发。 3. **后端服务**: - **Node.js**:作为后端服务的开发语言...
1. 前端开发:使用React Native或Flutter进行跨平台的移动端应用开发,以实现安卓和iOS的兼容性。 2. 后端架构:可能采用Node.js、Django或Spring Boot等技术搭建后端服务器,处理用户请求、数据存储和匹配算法。 3....