Quelqu'un sait-il comment modifier le style de la fenêtre "force close" (FC dialogue)? J'ai trouvé une ROM personnalisée avec une belle image dans le dialogue. A quel endroit puis-je trouver la popup?Comment modifier le style de la fenêtre android "force close"?
Répondre
Essayez de passer outre uncaughtException,
@Override
public void uncaughtException(Thread thread, Throwable e) {
e.printStackTrace();
try {
// create your custom dialog
displayErrorMessageToast();
Thread.sleep(3500);
} catch (Exception e1) {
Log.e(TAG, "Error: ", e1);
}
finally
{
killApplicationProcess(e);
}
}
pour plus d'informations: https://groups.google.com/forum/?fromgroups=#!topic/android-developers/2iUH1Knz8gw
mais cela n'est pas posiable changer tout le style de dialogue du système fc de cette façon. J'ai juste besoin de modifier le style de dialogue fc. – neverchange
Si vous répondez à la réponse de @Praful Bhatnagar, vous pouvez écrire votre propre UnCaughtException.java et définir un thread pour votre activité, comme ceci: Thread.setDefaultUncaughtExceptionHandler (new UnCaughtException (youractivity.this)); – Talha
merci beaucoup, cette réponse ne pouvait modifier que le style de dialogue ONE application fc. mais je veux changer tout le style de dialogue de l'application système fc. – neverchange
Essayez l'approche donnée dans ce blog
copie ici pour référence rapide:
Android UncaughtExceptionHandler
Implémenté par les objets qui souhaitent gérer les cas où un thread est arrêté par une exception non interceptée. Lors d'une telle résiliation, le gestionnaire est averti du thread de fin et de l'exception causale. S'il n'y a pas de gestionnaire explicite, alors le groupe du thread est le gestionnaire par défaut. Ci-dessous j'ai écrit l'utilisateur de code peut envoyer un rapport de bogue au développeur lorsque l'application a planté.
Code d'activité
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.ViewFlipper;
/**
*
* @author vijayakumar
*
*/
public class AndroidMADQAActivity extends Activity {
ViewFlipper flipper;
TextView textView = null;
Throwable throwable;
UnCaughtException un = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new UnCaughtException(AndroidMADQAActivity.this));
Integer[] items = { R.drawable.a, R.drawable.e,R.drawable.d,R.drawable.c};
setContentView(R.layout.main);
textView.setText("Helloo Error Welcome");
}
}
UnCaughtException.java
package com.madqa;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.Date;
import java.util.Locale;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Environment;
import android.os.Looper;
import android.os.StatFs;
import android.util.Log;
/**
* {@link UncaughtExceptionHandler} send an e-mail with
* some debug information to the developer.
*
* @author VIJAYAKUMAR
*/
public class UnCaughtException implements UncaughtExceptionHandler {
private static final String RECIPIENT = "[email protected]";
private Thread.UncaughtExceptionHandler previousHandler;
private Context context;
private static Context context1;
public UnCaughtException(Context ctx) {
context = ctx;
context1 = ctx;
}
private StatFs getStatFs() {
File path = Environment.getDataDirectory();
return new StatFs(path.getPath());
}
private long getAvailableInternalMemorySize(StatFs stat) {
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
private long getTotalInternalMemorySize(StatFs stat) {
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
private void addInformation(StringBuilder message) {
message.append("Locale: ").append(Locale.getDefault()).append('\n');
try {
PackageManager pm = context.getPackageManager();
PackageInfo pi;
pi = pm.getPackageInfo(context.getPackageName(), 0);
message.append("Version: ").append(pi.versionName).append('\n');
message.append("Package: ").append(pi.packageName).append('\n');
} catch (Exception e) {
Log.e("CustomExceptionHandler", "Error", e);
message.append("Could not get Version information for ").append(
context.getPackageName());
}
message.append("Phone Model: ").append(android.os.Build.MODEL).append(
'\n');
message.append("Android Version: ").append(
android.os.Build.VERSION.RELEASE).append('\n');
message.append("Board: ").append(android.os.Build.BOARD).append('\n');
message.append("Brand: ").append(android.os.Build.BRAND).append('\n');
message.append("Device: ").append(android.os.Build.DEVICE).append('\n');
message.append("Host: ").append(android.os.Build.HOST).append('\n');
message.append("ID: ").append(android.os.Build.ID).append('\n');
message.append("Model: ").append(android.os.Build.MODEL).append('\n');
message.append("Product: ").append(android.os.Build.PRODUCT).append(
'\n');
message.append("Type: ").append(android.os.Build.TYPE).append('\n');
StatFs stat = getStatFs();
message.append("Total Internal memory: ").append(
getTotalInternalMemorySize(stat)).append('\n');
message.append("Available Internal memory: ").append(
getAvailableInternalMemorySize(stat)).append('\n');
}
public void uncaughtException(Thread t, Throwable e) {
try {
StringBuilder report = new StringBuilder();
Date curDate = new Date();
report.append("Error Report collected on : ").append(curDate.toString()).append('\n').append('\n');
report.append("Informations :").append('\n');
addInformation(report);
report.append('\n').append('\n');
report.append("Stack:\n");
final Writer result = new StringWriter();
final PrintWriter printWriter = new PrintWriter(result);
e.printStackTrace(printWriter);
report.append(result.toString());
printWriter.close();
report.append('\n');
report.append("**** End of current Report ***");
Log.e(UnCaughtException.class.getName(),
"Error while sendErrorMail"+report);
sendErrorMail(report);
} catch (Throwable ignore) {
Log.e(UnCaughtException.class.getName(),
"Error while sending error e-mail", ignore);
}
// previousHandler.uncaughtException(t, e);
}
/**
* This method for call alert dialog when application crashed!
* @author vijayakumar
*/
public void sendErrorMail(final StringBuilder errorContent) {
final AlertDialog.Builder builder= new AlertDialog.Builder(context);
new Thread(){
@Override
public void run() {
Looper.prepare();
builder.setTitle("Sorry...!");
builder.create();
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
});
builder.setPositiveButton("Report", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent sendIntent = new Intent(Intent.ACTION_SEND);
String subject = "Your App crashed! Fix it!";
StringBuilder body = new StringBuilder("Yoddle");
body.append('\n').append('\n');
body.append(errorContent).append('\n').append('\n');
// sendIntent.setType("text/plain");
sendIntent.setType("message/rfc822");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { RECIPIENT });
sendIntent.putExtra(Intent.EXTRA_TEXT, body.toString());
sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sendIntent.setType("message/rfc822");
// context.startActivity(Intent.createChooser(sendIntent, "Error Report"));
context1.startActivity(sendIntent);
System.exit(0);
}
});
builder.setMessage("Unfortunately,This application has stopped");
builder.show();
Looper.loop();
}
}.start();
}
}
merci, mais je veux toujours changer le style de dialogue système fc. la façon dont vous avez donné du travail bien pour une application. Je veux un changement de niveau du système. comme: peut être dalvik attraper une exception, il appelle le dialogue fc .J'ai besoin de changer le style de dialogue. – neverchange
- 1. Android: Force Close Erreur
- 2. Application Android force close
- 3. Android Force Close sur ProgressDialog
- 4. application android faisant la force close
- 5. API Android Google Map: Force Close Erreur
- 6. Force Close Intention d'appel
- 7. Erreur FORCE CLOSE dans l'émulateur Android
- 8. Android: Spinner d'ouverture Close force avec ArrayList
- 9. AsyncTask Force Close
- 10. Force Close pour mapController?
- 11. listView force de l'adaptateur close
- 12. Service avec MediaPlayer Force Close
- 13. Force Close asynctask (Caractère illégal)
- 14. Comment conserver l'activité sur Force Close?
- 15. Force Close encore et encore
- 16. Obtenir "Force Close" avec mon premier HelloWorldLogin code android
- 17. Force Close pour faire AlertDialog et DialogInterface
- 18. Fenêtre contextuelle de redirection sur la fenêtre principale close
- 19. Android SimpleAdapter modifier le style d'élément
- 20. Force la boîte de dialogue close in C#
- 21. Une nouvelle intention crée une force close
- 22. oncroll fenêtre modifier le style de lien du menu
- 23. JQGrid formulaire modifier forme close
- 24. Telerik inline edit, fenêtre close
- 25. changer le style de modifier le texte en android
- 26. Force Close lorsque vous tentez de changer d'activité
- 27. Force Close Au cours de la mise en œuvre ArrayList - Android
- 28. Modifier le style de la listePréférence
- 29. Quel est le problème dans ce programme android simple, je reçois 'Force Close'
- 30. Modifier le style de UITableViewController
http://stackoverflow.com/questions/7533932/how-to-make-the-force-close-window- display-friendly-app-name-au lieu d'un packag –
Je vous recommande d'éviter le dialogue de fermeture de force plutôt que de le styliser :) –