¿Es posible get UserId y la contraseña de la aplicación instalada?

¿Es posible / admisible en Android SDK get UserId y la contraseña de la aplicación instalada (si tiene un inicio de session)? Necesito la información de la aplicación instalada, como el nombre de la aplicación, el nombre del package, la date de installation y me preguntaba si el nombre de usuario y la contraseña son factibles y permitidos por Android.

Esta pregunta ayuda a get el nombre de usuario requerido, pero esto es específico de la aplicación. Lo que quiero es una solución generalizada como si la aplicación instalada tuviera un inicio de session (nombre de usuario y contraseña), por ejemplo Facebook o Gmail o Twitter, solo entonces debería devolver los valores.

Lo mismo que quiero usar en la aplicación iPhone. Sugiera también su perspectiva sobre iOS . Quiero mencionar claramente que no estoy seguro si esto está permitido en Android e iOS.

Además, ¿puede AccountManager ayudarme en Android?

Nombres de usuario y passwords

iOS

No está claro, pero supongo que estás hablando de get la información de inicio de session de OTHER OTRAS aplicaciones, ya que no veo por qué necesitarías una forma general de get la información de tu propia aplicación.

En cuanto a la parte de iOS, esto no es factible. La mayoría de las aplicaciones almacena passwords en el llavero (como sugiere Apple), y no hay manera de compartir un grupo de acceso de llavero con otras aplicaciones (excepto si las aplicaciones comparten el mismo ID de semilla de package, pero ese no es el caso aquí). Los Conceptos de Servicios de Apple Key claramente declaran que

El iOS le da acceso a una aplicación solo a sus propios artículos de llavero. Los controles de acceso de llavero descritos en esta sección no se aplican a iOS.

Androide

Dudo mucho que haya una forma en Android, pero dejaré eso para que un desarrollador de Android más experimentado responda.

EDIT : dado que no has recibido ninguna otra respuesta, seguiré y diré lo que pienso con respecto a la parte de Android también. En términos generales, Android no proporciona una forma de almacenar cnetworkingenciales de la misma manera que lo hace iOS. En cambio, hay múltiples forms de hacerlo. En su sitio de Consejos de security , declaran que, cuando sea posible, el nombre de usuario y la contraseña no deben almacenarse en el dispositivo. Gmail, por ejemplo, no ( quizás no confiable ). Si los almacena allí, también dice que

De forma pnetworkingeterminada, los files que crea en el almacenamiento interno solo son accesibles para su aplicación.

Detección de aplicaciones

Cuando se trata de detectar aplicaciones, hay dos maneras de hacerlo (esto es para iOS):

  • Verificando si el dispositivo admite un esquema de URL específico (y, por lo tanto, la aplicación está instalada). Esto se puede hacer con canOpenUrl:
  • Comparando los processs actualmente en ejecución del dispositivo con los nombres ejecutables de la aplicación conocidos. Esto se hace con sysctl() . Esta es una forma clara de hacerlo: Categoría de UIDevice para processs

Para Android, vea este ejemplo: Cómo get la list de aplicaciones instaladas en Android .

Conclusión

Por layout, no hay forma de get nombres de usuario y passwords en iOS o Android. Hay forms de get una list de la mayoría de las aplicaciones instaladas en un iPhone. Esto también debería ser posible en Android, proporcioné un enlace que describe una forma de hacerlo.

Es posible que desee considerar a OAuth como el vehículo para lograr finalmente lo que está tratando de hacer. Los tres ejemplos que mencionas son compatibles con esto:

https://developers.facebook.com/docs/reference/dialogs/oauth/

https://dev.twitter.com/docs/auth/oauth/faq

https://developers.google.com/accounts/docs/OAuth2

Técnicamente hablando, en Android, no puede encontrar las cnetworkingenciales utilizadas para una aplicación hasta que se almacenan en alguna location compartida (lo que deja un gran agujero de security, ¡así que no se hace!).

Puede encontrar información como, nombre del package, nombre de la aplicación, time de installation, etc. utilizando PackageManager. Consulte el siguiente fragment de código.

  PackageManager pm = getPackageManager(); List<ApplicationInfo> packages = pm .getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { // returns the package name packageInfo.packageName; // returns the application name pm.getApplicationLabel(packageInfo).toString(); // returns the last installation time pm.getPackageInfo(packageInfo.packageName, 0).firstInstallTime; }