Cómo acceder a un proveedor de contenido en otra aplicación desde una aplicación externa.
El hecho de utilizarlo depende principalmente de los requisitos reales de la aplicación. Como todos sabemos, si la aplicación A quiere acceder a los datos de la aplicación B, la mejor manera es que la aplicación B proporcione algunas interfaces de acceso a B, y luego A puede agregar, eliminar, modificar y verificar los datos en B a través de esta interfaz. Para unificar la interfaz, Android afirmó el proveedor de contenido (ContentProvider) como un componente. ¿Cómo utilizar el script VB para acceder al proveedor de contenido desde el exterior? Etiquetas WinCC
¿Conexión? Si entiendo correctamente, ¿quizás quieras leer y escribir variables Win? En el script, el script C es básicamente esta declaración: Float F; F=GetTagFloat("TAG1") Esto leerá el valor de TAG1, ya sea que TAG1 sea una variable externa o una variable interna, debe agregar "" en el script. , De lo contrario, se usará dentro del script de forma predeterminada... Cómo acceder a clases internas estáticas desde el exterior
1. Para acceder a miembros de una clase interna desde una clase externa, necesita crear un objeto de la clase interna, y luego puede acceder a cualquier miembro de la clase interna. Los miembros, incluidos los miembros privados, deben tener en cuenta que los miembros de las clases internas no pueden tener miembros estáticos.
En segundo lugar, las clases internas no se pueden crear instancias directamente. Se pueden crear instancias a través de clases externas, pero el sistema debe inicializar los miembros estáticos de forma predeterminada. Esto causará conflictos. para estipular que los miembros de las clases internas no pueden Hay miembros estáticos, bloques de inicialización estáticos, métodos estáticos, etc.
En tercer lugar, al llamar a métodos estáticos (ya inicializados cuando se carga la clase), la clase interna primero debe crear la clase externa.
A continuación, hablemos de clases anidadas: si no necesita establecer una conexión entre los objetos de la clase interna y los objetos de la clase externa, entonces puede declarar la clase interna como estática. Esto a menudo se denomina clases anidadas. Para comprender qué significa estático cuando se aplica a una clase interna, debe recordar que un objeto de clase interna normal contiene implícitamente una referencia al objeto de clase externa que lo creó. Sin embargo, este no es el caso cuando la clase interna es una clase estática. Clase anidada significa:
1. Para crear un objeto de una clase anidada, no necesita un objeto de su clase adjunta.
2. No se puede acceder a un objeto no estático de una clase adjunta desde un objeto de una clase anidada.
¿Cómo acceder al servidor web corporativo desde fuera?
Asigne el puerto 80 en el servicio virtual del enrutador a la computadora que aloja el servicio web y luego podrá acceder a él utilizando el nombre de dominio IP público Cómo acceder a SharedPreference para aplicaciones externas
Ejemplo AessFromSharePreferenceDemo Descripción Describe cómo leer la SharedPreference de otra aplicación (otra publicación de blog) y cómo acceder a la SharedPreference de otra aplicación (otra publicación de blog): DemoSharedPreferences)
1) Crear un nuevo proyecto de Android, el nombre es: AessFromSharePreferenceDemo
2) Escribe el código correspondiente:
paquete .mesada.demo1;
import android.app.Activity;
importar android.content..SharedPreferences;
importar android.content.pm.PackageManager.NameNotFoundException;
importar android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
/**
* Esta es una demostración sobre ess SharedPreferences. * @author Xiaolong Long
* @date 2010-12-30
* @version 1.0
*/
clase pública MainActivity extiende Actividad {
cadena final estática privada TAG = "MainActivity";
cadena final estática privada boolean mIsPrintInfo = true;
cadena final estática pública PREFERENCE_PACKAGE = ". mesada.demo";
cadena final estática pública PREFERENCE_NAME = "MyPrefsFile";
cadena final estática pública KEY_ USERNAME = "NOMBRE DE USUARIO";
final estática pública String KEY_PWD = "CONTRASEÑA";
public static int MODE = Context.MODE_WORLD_READABLE
+ Context.MODE_WORLD_WRITEABLE;
TextView mUserNameView;
TextView mPwdView;
/** Se llama cuando se crea la actividad por primera vez.
/
@Override
public void onCreate(Bundle saveInstanceState) {
if (mIsPrintInfo)
Log.i(TAG, " onCreate()...") ;
super.onCreate(savedInstanceState);
setContentView(R.layout.main); android:label="@string/app_name"> intent-filter>
manifest>
4) Hecho.
Cómo cerrar otra aplicación en Android
1. am.killBackgroundProcesses(String packageName);
Este método solo puede detener aplicaciones en segundo plano. No funciona. si la aplicación está en primer plano. os.Process.killProcess(info.pid);
} } Cómo acceder a otra aplicación desde una aplicación
Usando el marco apkplug, puedes ejecutar directamente android:sharedUserId sin *** * Apk desinstalado. Cómo utilizar SQLite para acceder a la base de datos de una aplicación en otra aplicación
1. Características de la base de datos SQLite
(1) La base de datos SQLite es una base de datos integrada de código abierto y no requiere una base de datos separada. El motor de base de datos está integrado directamente en el proceso de la aplicación, por lo que las aplicaciones pueden operar directamente en él a través de la API.
(2) El procesamiento de transacciones es atómico, consistente, independiente y duradero (ACID), incluso después de fallas del sistema y cortes de energía.
(3) La base de datos SQLite implementa el procesamiento independiente de transacciones mediante la exclusividad de bloqueos de disfrute.
(4) Un archivo de disco multiplataforma puede almacenar una base de datos.
(5) Puede admitir 2 TB de datos.
(6) Autónoma, sin dependencia externa.
(7) Admite tipos de datos como NULL, INTEGER, NUMERIC, REAL, TEXT y BLOG.
(8) La base de datos SQLite no tiene concepto de cuenta de usuario. Los permisos de la base de datos dependen únicamente del sistema de archivos.
2. Operaciones básicas de la base de datos SQLite
(1) Crear base de datos
sqlite3 data.sqlite3
Crear una base de datos en el actual directorio Una base de datos llamada data.sqlite3.
(2) Crear tabla de datos
Crear tabla call_list (id INTEGER PRIMARY KEY, type NUMERIC, telnum NUMERIC, bttime TEXT, tcount NUMERIC, charge_rate NUMERIC, charge_sum NUMERIC ); p>
p>
Cree una tabla de datos llamada call_list, que contiene 7 campos id, tipo, telnum, bttime, tcount, charge_sum.charge_rate.
(3) Insertar datos en la tabla de datos
insertar en valores call_list ($num,1,2,'new',4,5,6 ); p>
(4) Consultar los datos en la tabla de datos
select * from call_list
(5) Modificar los datos en la tabla call_list
actualizar call_list set id =00001000 donde id=10001
(6) Eliminar registros de datos en la tabla
eliminar de call_list donde id=1000; (7) Otros comandos comunes de SQlite
.tables: enumera todas las tablas de datos en la base de datos
.schema tablename: enumera la estructura de la tabla de datos especificada
.quit - Salir de la base de datos
(8) Importar y exportar la base de datos SQLite
a. Exportar todos los datos en la base de datos data.sqlite:
datos sqlite3. sqlite
>.output dd.sql
>.dump
De esta manera, los datos se guardan en el archivo dd .sql. Tenga en cuenta que este archivo. No es una base de datos, sino una declaración SQL.
Estos datos luego se importan a otra base de datos, la base de datos data1.sqlite.
sqlite3 data1.sqlite
>.read dd.sql
De esta forma se copian los datos de la base de datos data.sqlite a la data1.sqlite base de datos.
b. Exportar los datos en la tabla de datos a a.txt
.output a.txt redirección de salida a a.txt
seleccione * de call_list ;
c. Importe los datos de la tabla exportada a una tabla recién creada en otra base de datos.
Por ejemplo, al exportar datos de la tabla call_list en data.sqlite, importe datos a la tabla. llamar a otra base de datos.
Primero crea la llamada a la tabla.
Luego .importa un.txt.
3. Lenguaje C para operar la base de datos Sqlite
API:
int sqlite3_open(const char* filename,sqlite3**ppdb);
El primer parámetro se utiliza para especificar el nombre del archivo de la base de datos.
El segundo parámetro es un puntero al identificador de la base de datos.
Devuelve 0 si la base de datos se abre correctamente; de lo contrario, se devuelve un código de error.
int sqlite3_close(sqlite3*);
El parámetro pasado es un puntero al identificador de la base de datos, que se utiliza para cerrar la base de datos. Si la operación es exitosa, se devuelve 0. de lo contrario se devuelve un código de error.
int sqlite3_errcode(sqlite3* db);
const char* sqlite3_errmsg(sqlite3* db);
const char* sqlite3_errmsg16(sqlite3* db);
Llame a estas tres funciones. La primera función devuelve el código de error de la llamada más reciente a la interfaz de la base de datos. La segunda función devuelve el mensaje de error codificado en UTF-8 y la tercera función devuelve el mensaje de error codificado en UTF-16.
int sqlite3_exec(sqlite3*,const char*sql,int(*callback)(void*,int,char**,char**),void*,**errmsg);
Esta es una función reutilizable que se utiliza para ejecutar sentencias SQL de bases de datos SQLite.
El primer parámetro es un puntero al identificador de la base de datos sqlite.
El segundo parámetro es la sentencia SQL a ejecutar.
El tercer parámetro es la función de devolución de llamada, que se utiliza al realizar operaciones de consulta y se puede pasar como un valor nulo en otras operaciones.
El cuarto parámetro es el parámetro real pasado al primer parámetro de la función de devolución de llamada.
El quinto parámetro es el mensaje de error. Cómo acceder a jsp en una aplicación REST
Puedes entender resteasy como un servlet, excepto que admite la definición de interfaz de estilo REST. Luego, Resteasy necesita asignar esa dirección a un método específico de una clase específica que se ejecutará. ¿Cómo importar datos de Excel desde fuera?
El siguiente es el método que resumí al realizar la importación en los últimos días. Es solo para su referencia. Solo puede pensar en la implementación específica. 1. Los datos que importamos a la base de datos generalmente tienen una plantilla fija, es decir, tienen encabezados de columna. Sin embargo, un dato puede distribuirse en Excel y almacenarse en diferentes tablas de datos. Entonces, ¿cómo podemos importarlo directamente? Creo que sería problemático insertar declaraciones SQL empalmándolas en el archivo de clase. Mi enfoque es crear una tabla intermedia en la tabla de datos, llamada temporalmente tabla temporal, que corresponde a la columna de Excel uno a uno. La columna de estado adicional en la tabla se usa para identificar si la verificación de datos falló o fue exitosa (. 0 significa que no hay ningún problema con los datos, -1 significa que no hay ningún problema con los datos (Hay un problema), failReason registra el motivo del error de importación y luego agrega un archivo de configuración para asignar la columna de Excel a la tabla de datos. y luego agrega un archivo de configuración para asignar la columna de Excel a la tabla de datos. 2. Los datos que se van a importar generalmente deben verificarse. Los datos que no cumplan con las reglas de importación no están permitidos o no se pueden importar. Verifico los datos en dos pasos, una parte es la verificación del segmento de código y la otra parte es la verificación de la base de datos. En cuanto a cómo dividirlo, depende del análisis de todos en función de la situación real. Puse límites de longitud de caracteres, límites de reglas de expresiones regulares, etc. en la verificación del segmento de código. Los datos con valores de diccionario en la base de datos deben acceder a la base de datos para su verificación, lo que puede reducir la cantidad de accesos a la base de datos. Los datos que han sido verificados nuevamente por el cliente se insertarán en la tabla temporal independientemente de si pasa o no, pero el valor de estado es diferente.
3. Entonces, ¿cómo insertar datos temporales en diferentes tablas de datos respectivamente? Todos deben haber pensado en los disparadores. Así es, utilizo disparadores posteriores para insertar datos en tablas temporales en mi Excel. Los datos insertados se procesarán en el disparador. Si el valor de estado de los datos insertados es -1, el disparador posterior se activará. Si el valor de estado es -2, el disparador posterior se activará si el valor de estado. el valor es -3, se activará el disparador posterior. Si el valor de estado es -4, se activará el disparador posterior. La verificación en nombre del lado del código es 1, lo que significa que la verificación en el lado del código tiene. no pasó, por lo que no es necesario continuar con el siguiente paso de Procesamiento. Si el valor de estado es 0, continúe procesando en el disparador, como detectar que el valor del diccionario en la tabla del diccionario no existe, etc. , Si no se cumplen los requisitos, cambie el valor de estado del registro insertado actualmente en la tabla temporal a -1 y actualice el motivo del error de verificación al campo failReason. Si no se cumplen los requisitos, cambie el valor de estado de. el registro actualmente insertado en la tabla temporal es -1 y el motivo del error de verificación se actualiza en el campo failReason. Si todas las sumas de verificación están bien, escriba una instrucción de inserción para insertar los datos en una tabla diferente. 4. Una vez completada la importación de datos, ¿qué debo hacer con los datos problemáticos? Consúltelo, genere una plantilla, agregue un "motivo de falla" de acuerdo con el original y colóquelo en un archivo de Excel, que en realidad son los registros con un valor de estado de -1, y luego devuélvalo al usuario para que lo vea. Después de pasar los pasos anteriores, se completa toda la función de importación. Lo anterior es solo una idea y esperamos mejoras. Los artículos en la columna técnica original de este sitio son originales o compilados por Zhongrui. Indique al reimprimir: El artículo proviene de Zhongrui. Este sitio se reserva el derecho de exigir responsabilidad.