2010-09-06 4 views
0

J'ai des gens qui se plaignent de mon application obtient FC quand ils le lancent (pendant ce temps, d'autres n'ont jamais eu un seul problème). Voici ma source d'activité complète. Comme cela arrive sur des appareils que je ne possède pas, je ne peux pas le réparer. De ce qu'ils me disent, ça ne marche pas: Motorola Blackflip, Motorola Dext, Motorola CLIQ XT. Supposons Motorola n'aime pas mon application après tout ...Mon application obtient "Fermeture de force" sur plusieurs appareils

Pourrait-il être que j'autorise un minSdkVersion = "3"? J'ai testé 1.5 sur l'émulateur et a bien fonctionné ...

Merci d'avance pour vos réponses.

public class workit extends Activity implements OnClickListener { 

Button yay; 
Button yay0; 
Button yay1; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.main); 

     yay = (Button) findViewById(R.id.gostart); 
     yay.setOnClickListener(this); 
     yay0 = (Button) findViewById(R.id.dontstart); 
     yay0.setOnClickListener(this); 
     yay1 = (Button) findViewById(R.id.exit); 
     yay1.setVisibility(ImageView.GONE); 


     ImageView inizio = (ImageView)findViewById(R.id.start);           
     inizio.setVisibility(ImageView.VISIBLE); 
     inizio.setBackgroundResource(R.drawable.start); 
    } 

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if (v == yay0) { 
     finish(); 
    } 
    if (v == yay) { 
    ImageView inizio = (ImageView)findViewById(R.id.start); 
    inizio.setVisibility(ImageView.GONE); 
    WebView work = new WebView(this); 
    setContentView(work); 
    work.loadUrl("file:///android_asset/index1.html"); 
    work.setWebViewClient(new work()); 
    work.setBackgroundColor(0); 
    work.getSettings().setBuiltInZoomControls(true); 
    work.getSettings().setDefaultZoom(ZoomDensity.FAR); 
    } 
    if (v == yay1) { 
     finish(); 
    } 
    } 
    private class work extends WebViewClient {  
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.contains("exit.html")) { 
      // TODO: do what you have to do 
      finish(); 
      } 
      view.loadUrl(url); 
      return true; 
     } 
    } 
} 
+1

Vous devriez regarder ce rapport d'erreur lib, je l'utilise et il fonctionne bien, envoie des rapports d'erreur à une feuille de calcul google. Donc, vous ne comptez pas sur les rapports d'erreur du marché ou tout min. Version du système d'exploitation. http://code.google.com/p/acra/ –

+0

Merci, je vais vérifier et revenir pour rapporter les résultats. – thpoul

+0

Les rapports sont incroyables. J'ai trouvé tellement de statistiques intéressantes là-bas! Merci de partager cela! – thpoul

Répondre

1

Votre meilleur pari est de demander à quelqu'un de vous envoyer la sortie LogCollector (dans mon expérience, les utilisateurs sont très heureux de vous fournir des informations aux problèmes de débogage. Il y a des gens vraiment cool là-bas). Cela devrait vous donner une callstack, et des informations sur le type d'exception que vous avez déclenchée (NullPointerException, etc).

Ensuite, sur quoi construisez-vous votre application? Il devrait y avoir une entrée "Android x.x" dans votre structure de projet quelque part. Si vous construisez quelque chose qui est censé fonctionner sur Android 1.5, alors assurez-vous que vous construisez réellement contre 1.5. Vous pouvez construire contre 2.0 si vous voulez, mais si vous avez besoin d'utiliser des fonctions spécifiques à 2.0, vous devrez les encapsuler correctement. (Cela a été expliqué en détail sur stackoverflow plusieurs fois.)

Sur une note non liée - je recommande des noms de variables plus informatifs. "yay0" ne signifie rien pour quiconque n'a pas travaillé intimement avec le code pendant un moment.

+0

Merci pour votre réponse, ma cible est de 2,2 en réalité. De quelle façon recommanderiez-vous aux utilisateurs de m'envoyer la sortie LogCollector? Comment devrais-je les guider à travers? – thpoul

+0

Demandez-leur d'installer l'application LogCollector et de l'exécuter dès que votre application tombe en panne. Il va automatiquement préparer un mail qu'ils peuvent vous envoyer. En ce qui concerne la version de construction - juste pour le plaisir, essayez de le mettre à 1.5 et voir s'il compile encore. Il est possible de cibler la version 2.2 de sorte que vous puissiez prendre en charge l'installation sur une carte SD, mais encore une fois - assurez-vous de ne pas utiliser les appels API 1.6+ si vous souhaitez prendre en charge les périphériques 1.5. – EboMike

+0

Ceci est la réponse !! work.getSettings(). setDefaultZoom (ZoomDensité.FAR); ne peut pas être compilé en 1.5 et 1.6. Maintenant, je dois juste trouver un moyen d'avoir mon FAR zoomé sans ZoomDensity. – thpoul

Questions connexes