我的Android应用可以检测它是否从Eclipse启动?

有没有办法让Android活动检测它是如何启动的? 具体来说,我想检测我的应用程序是否是从Eclipse启动的,而不是它是否正常启动(例如,从主屏幕或已安装的应用程序列表)。

这是知道是否应该上传崩溃报告的代理。 我假设如果Eclipse启动了应用程序,那么我不需要上传崩溃,因为我已经在调试应用程序,但是如果应用程序的相同版本是“正常”启动的,我想要上传任何例外。

这只是为了让我的个人调试和开发更容易,所以对Eclipse的不可篡改或调整对我很有用。


此方法似乎可以满足您的要求:

if(!android.os.Debug.isDebuggerConnected()) {
    // Send report...
}

这应该告诉你,如果你当前连接到调试器。 如果从应用程序抽屉或主屏幕快捷方式启动,则不会附加(除非您已经有一个正在运行的实例),并且此方法将返回false - 在这种情况下,您可以上传您的崩溃信息。


你可以使用if (BuildConfig.DEBUG)来告诉一个发布版本的调试版本。


你(我?)可以为应用程序添加一个新的活动,并让Eclipse启动它。 新的活动将设置一个标志,否则不会被设置,否则会相同。 经常使用该应用程序将通过默认活动来实现,因此该标志将默认为未设置。

添加一个新的扩展现有活动的DebugActivity (称之为MainActivity ):

public class DebugActivity extends MainActivity {
    public DebugActivity() {
        super(true); // running from Eclipse
    }
}

MainActivity添加一个新的布尔构造函数和无参数构造函数来支持新的子类:

private final boolean viaEclipse;

public MainActivity() {
    this(false);
}

public MainActivity(boolean viaEclipse) {
    this.viaEclipse = viaEclipse;
}

复制.MainActivity的应用程序清单中的<activity>信息,但更改重复以引用新的.DebugActivity 。 从.DebugActivity <intent-filter>移除<category>标记(“LAUNCHER”之一),以防止它出现在Android UI中。

在Eclipse中,选择Run -> Run Configurations ... 。 选择应用程序的现有运行配置。 单击“复制当前选定的启动配置”图标,在复制的Android选项卡上将Launch Action从“启动默认活动”更改为“启动:”并选择新的.DebugActivity

缺点

  • Eclipse的“调试”运行与“真实”运行并不完全相同,但差别非常小(基本上只是启动类名称和堆栈中的额外条目)。 至少在Java方面没有重复的代码。

  • 我在清单中复制了我的<activity>大部分内容,这有点脆弱,但不是太糟糕。

  • 仍然会很高兴有比这更简单的东西。

    链接地址: http://www.djcxy.com/p/72625.html

    上一篇: Can my Android app detect if it was launched from Eclipse?

    下一篇: Silex passing app and request to controller classes