Launch FeedbackActivity in my application like in Android Hangouts

后端 未结 3 1439
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-15 00:19

I would like to launch com.google.android.feedback.FeedbackActivity for my application. Like it happens in Hangouts application.

Does anyone knows which ex

相关标签:
3条回答
  • 2021-02-15 01:11

    Although it's not exactly the same, you can programmatically invoke a crash-report-dialog:

    ApplicationErrorReport report = new ApplicationErrorReport();
    report.packageName = report.processName = getApplication()
        .getPackageName();
    report.time = System.currentTimeMillis();
    report.type = ApplicationErrorReport.TYPE_CRASH;
    report.systemApp = false;
    
    ApplicationErrorReport.CrashInfo crash = new ApplicationErrorReport.CrashInfo();
    crash.exceptionClassName = e.getClass().getSimpleName();
    crash.exceptionMessage = e.getMessage();
    
    StringWriter writer = new StringWriter();
    PrintWriter printer = new PrintWriter(writer);
    e.printStackTrace(printer);
    
    crash.stackTrace = writer.toString();
    
    StackTraceElement stack = e.getStackTrace()[0];
    crash.throwClassName = stack.getClassName();
    crash.throwFileName = stack.getFileName();
    crash.throwLineNumber = stack.getLineNumber();
    crash.throwMethodName = stack.getMethodName();
    
    report.crashInfo = crash;
    
    Intent intent = new Intent(Intent.ACTION_APP_ERROR);
    intent.putExtra(Intent.EXTRA_BUG_REPORT, report);
    startActivity(intent);
    

    More information here: http://blog.tomtasche.at/2012/10/use-built-in-feedback-mechanism-on.html

    0 讨论(0)
  • 2021-02-15 01:24

    Just re-create that layout on a .xml file and create a Class that extends FragmentActivity (as the Google Hangouts App seems to do) or create a Class that extends DialogFragment to handle its logic.

    0 讨论(0)
  • 2021-02-15 01:25

    So it seems that this is possible, bur report is not visible in Developer console.

    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    protected Intent prepareIcsFeedbackIntent(Activity activity, PackageManager packageManager) {
        ApplicationErrorReport localApplicationErrorReport = new ApplicationErrorReport();
        localApplicationErrorReport.packageName = activity.getPackageName();
    
        localApplicationErrorReport.type = 11;
        localApplicationErrorReport.installerPackageName = packageManager.getInstallerPackageName(
                localApplicationErrorReport.packageName);
    
        return getAppErrortIntent().putExtra(Intent.EXTRA_BUG_REPORT, localApplicationErrorReport);
    }
    
    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    protected Intent getAppErrortIntent() {
        Intent localIntent = new Intent(Intent.ACTION_APP_ERROR)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        return localIntent;
    }
    
    0 讨论(0)
提交回复
热议问题