这在上面@TomTasche 评论中的链接的帮助下得到了解决。在 Android 上使用内置的反馈机制。
在我的中,AndroidManifest.xml
我将以下内容添加到<Activity>
我想从中调用反馈代理的位置。
<intent-filter>
<action android:name="android.intent.action.APP_ERROR" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我做了一个简单的方法,叫做sendFeedback()
(来自 TomTasche 博客文章的代码)
@SuppressWarnings("unused")
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void sendFeedback() {
try {
int i = 3 / 0;
} catch (Exception e) {
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);
}
}
从我的角度来看,SettingsActivity
我称之为:
findPreference(sFeedbackKey).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public final boolean onPreferenceClick(Preference paramAnonymousPreference) {
sendFeedback();
finish();
return true;
}
});
经验证可与 Android 2.3.7和4.2.2一起使用。
当sendFeedback()
调用该方法时,会打开一个“使用完成操作”对话框,用户可以在其中从三个操作/图标中进行选择。
返回到应用程序的调用应用程序,以及 Google Play 和反馈代理。选择Google Play Store
或Send feedback
将按预期打开内置 Android 反馈代理。
如果可以跳过“使用完成操作”步骤,我还没有进一步调查,可能通过将正确的参数传递给Intent
. 到目前为止,这正是我现在想要的。