permission permisos name internet intent example editar androidmanifest android eclipse android-intent android-4.0

name - permisos internet android manifest



Excepción cuando ejecuto mi aplicación desde Eclipse (9)

He tenido este problema durante casi 2 meses y no puedo resolverlo. El problema es que si mi aplicación se está ejecutando y ejecuto (reinstalo) mi aplicación desde Eclipse, aparece un mensaje de error que indica que mi aplicación se ha bloqueado ''Lamentablemente, se ha detenido''. Observé que también ocurre cuando lo ejecuto lejos de mi PC / Eclipse, creo que ocurre solo después de que no lo ejecuto por un tiempo.

Solo ocurre si la aplicación está activa en la tercera actividad ( BaseDiagramActivity ) y luego ejecuto la aplicación nuevamente desde Eclipse. Despojé básicamente toda la aplicación excepto las 3 actividades y todavía está sucediendo.

He buscado y buscado una solución a este problema, pero no puedo encontrar ninguna buena respuesta o una que se aplique a mí.

No parece un problema de hardware o versión de Android ya que estoy ejecutando esto en mi tableta (4.0.3) y mi teléfono (4.0.2, estaba sucediendo en 4.0.1 antes de la actualización). A menos, por supuesto, es un error de sándwich de helado.

Avíseme si se requiere más información.

La excepción (Tag = AndroidRuntime)

FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException at android.app.LoadedApk.makeApplication(LoadedApk.java:482) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938) at android.app.ActivityThread.access$1300(ActivityThread.java:123) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362) at android.app.LoadedApk.getClassLoader(LoadedApk.java:305) at android.app.LoadedApk.makeApplication(LoadedApk.java:474) ... 11 more

El código de Android

LoadedApk.initializeJavaContextClassLoader() - La línea 362 parece ser el delincuente

A continuación se encuentran los archivos relevantes:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="[my package]" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="HomeActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="LoadDiagramActivity" android:label="Load Diagram"></activity> <activity android:name="BaseDiagramActivity" android:label="Base Diagram"></activity> </application> </manifest>

HomeActivity.java

public class HomeActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); Button diagramButton = (Button)findViewById(R.id.diagram); diagramButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(HomeActivity.this, LoadDiagramActivity.class)); } }); } }

LoadDiagramActivity.java

public class LoadDiagramActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.load_diagram_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.add_new_diagram: startActivity(new Intent(this, BaseDiagramActivity.class)); return true; default: return super.onOptionsItemSelected(item); } } }

BaseDiagramActivity.java

en realidad, no importa qué actividad sea esta, la excepción se produce siempre que se inicie una ''tercera'' actividad (o haga clic en el botón Agregar en LoadDiagramActivity .

public class BaseDiagramActivity extends Activity { }

home.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/diagram" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Diagram" /> </LinearLayout>

Información Adicional

Cuando quité mi proyecto para hacer una respuesta más simple, moví todo al espacio de nombres del paquete. En el proyecto real hay 5 espacios de nombres, todavía estaban presentes cuando estaba probando con la versión reducida pero sin llamar (por lo que pude ver).

Aquí están los paquetes:

  • [package] - lógica general
  • [package].activities : todas las actividades y actividades básicas
  • [package].database - toda interacción con la base de datos
  • [package].models - modelos para guardar / cargar datos
  • [package].renderables : objetos dibujados en un lienzo

Intenté agregar un atributo `android: sharedUserId ''al manifiesto y parecía no hacer nada las dos veces que lo intenté. Cuando inicialmente estaba investigando esto, llegué a la conclusión de que el ID de usuario compartido solo se aplicaba a diferentes proyectos, no a paquetes diferentes.

Además, no creo que haya ninguna interacción con la base de datos cuando eliminé todo. El hecho de que la tercera actividad podría ser cualquier actividad, incluso HomeActivity, era algo en contra de esta teoría.

Enlaces útiles

Actualización 1/11/2012

Hace un par de días que volví a este proyecto, creé un nuevo proyecto en Eclipse Juno (antes estaba en Helios) y transferí todo de forma manual para que las herramientas de Eclipse y Android manejaran casi toda la interacción Manifiesto pero todavía está ocurriendo . Voy a verlo un poco más en los próximos días y actualizar si encuentro algo.

Para su información, mi nuevo proyecto apunta a lo siguiente:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" />

La nueva estructura de proyecto también tiene ahora todas las actividades en el paquete raíz (es decir, [paquete], no [paquete] .actividades). También estoy usando la sintaxis (¿nueva?) Para mostrar la actividad principal:

<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="[my package].LoadDiagramActivity" />

También sigue ocurriendo en mi Galaxy Nexus ahora actualizado ejecutando Jellybean 4.1.2.


Al inspeccionar su código, creo que se está saltando la configuración de "setContentView(rid)" en LoadDiagramActivity . Intenta configurar la vista en onCreate() .

Espero que esto te ayudará.


Debes agregar "." antes del nombre de la activity en Menifest .

Me gusta esto

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".HomeActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoadDiagramActivity" android:label="Load Diagram"></activity> <activity android:name=".BaseDiagramActivity" android:label="Base Diagram"></activity> </application>

Actualizo la actividad de tu mensímetro. Compruébelo por favor...


Espera después de que tu aplicación se cuelgue cuando la ejecutas por segunda vez. La aplicación se lanzará después de la colisión de nuevo. Esto pasa a veces conmigo. Si es el mismo caso, no olvide limpiar su proyecto cada vez antes de ejecutarlo.


Intenta agregar una cosa más en el archivo Manifiesto, estoy seguro de que ya lo has intentado ...

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="[my package]" android:versionCode="1" android:versionName="1.0" android:sharedUserId="com.mj.app" >

Parece que en tu proyecto tienes varios PAQUETES, como com.package.p1 , com.package.p2 ,com.package.p3 ...

Y al comenzar estás en p1 y luego pasas a p2 - p3 ... y en ese momento tratas de ejecutarlo otra vez ... así que el Android te da error.


No ha agregado el período a los nombres de sus actividades en los atributos de manifiesto de android:name . Quizás, esto causa el problema.


No hay nada de malo en el código que nos has dado hasta ahora. Lo probé en un nuevo proyecto con el nombre de paquete com.test y funcionó a la perfección. Lo único que agregué en los archivos fue la declaración del paquete. (Y agregué el archivo load_diagram_menu.xml, por supuesto).

Si es posible, sería genial si pudiera darnos acceso al proyecto completo. Si el proyecto está funcionando en la computadora de otra persona, lo más probable es que Eclipse o el complemento Eclipse de Android se estén portando mal. Una instalación limpia de Eclipse resolvería eso. (Aunque entiendo cómo estar fuera de línea podría dificultar esto. :-))


Para esto, asegúrese de marcar "Crear automáticamente" al limpiar el proyecto. (Proyecto -> Build Automatically)


Si coloca 13 en su minSdkVersion , debería funcionar.

O eso, o necesita setDisplayHomeAsUpEnabled(false) en onCreate() de sus otras actividades.

Ambas soluciones deberían funcionar.

Comenzando en el Nivel 14 de la API de acuerdo con la documentation , setHomeButtonEnabled(true) ya no se hace por usted de manera predeterminada, y continúa diciendo que

Al configurar la opción de visualización DISPLAY_HOME_AS_UP, se habilitará automáticamente el botón de inicio.

Entonces, podemos inferir que setDisplayHomeAsUpEnabled(false) funciona de manera similar a setHomeButtonEnabled(false)


Si no me equivoco, esto solo ocurre cuando reinstalamos la aplicación desde Eclipse Run-> As. Por lo tanto, es poco probable que esto suceda cuando un usuario se actualiza a través de Play. Puedo decir esto con confianza ya que también noté mi aplicación con esta excepción durante la reinstalación a través de Eclipse, pero nada en Crittercism.

Para solucionar esto, trabajé para resolver el consumo de memoria de mi aplicación.

  1. Si solo tienes 1 conjunto de objetos arrastrables, entonces cámbialo. Cree un drawables-mdpi y copie todo el archivo de esa carpeta 1 drawables (drawables, drawable-ldpi). Si tiene solo 1 juego, Android lo redimensionará para su uso en pantallas más grandes, por lo tanto, ocupando internamente demasiada memoria, y la limpieza de este tipo de memoria (mapa de bits) es propensa a errores. Suena loco, pero hace maravillas. No me crea, ejecútelo en el reloj de uso de memoria Heap antes y después de este cambio, notará que su aplicación está tomando un 25% menos de memoria para un escenario común.
  2. Si está realizando operaciones de mapa de bits, es posible que desee considerar la reducción de escala. Al menos cuando está configurando opciones, definitivamente quiere reducirla. Mira here y here . Buscar o downscaleing.
  3. Finalmente no te olvides de bitmap.recycle(); bitmap = null; bitmap.recycle(); bitmap = null; en su onDestroy y antes de todo System.exit (0).

Android hace un montón de trabajo de fondo, y la reinstalación es una expectativa de limpieza abrupta de la aplicación. La memoria no limpiada puede causar problemas. Esta excepción es una de esas internal . Entonces no pienses que sea sencillo.