2013-07-10 10 views
7

Androidのアクティビティを開始する方法を検出する方法はありますか?具体的には、自分のアプリがEclipseから起動されたかどうかを、それが正常に起動した場合(ホーム画面やインストールされているアプリケーションのリストなど)と比較して検出したいと考えています。私のAndroidアプリがEclipseから起動されたかどうかを検出できますか?

これは、クラッシュレポートをアップロードするかどうかを知るためのプロキシです。私はEclipseがこのアプリケーションを起動したと仮定していますが、すでにアプリケーションをデバッグしているのでクラッシュをアップロードする必要はありませんが、アプリケーションの同じビルドが「通常」起動されていれば、例外。

これは私の個人的なデバッグと開発を簡単にするためのものです。そのため、Eclipseに移行できないハックや調整が役に立ちます。

答えて

2

This方法は、必要なものを行うために表示されます。

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

あなたが現在デバッガに接続している場合、これはあなたを伝える必要があります。アプリケーションドロワやホーム画面のショートカットから起動した場合、(実行中のインスタンスがの場合は)、このメソッドはfalseを返します。この場合、クラッシュ情報をアップロードできます。

+0

これは、アプリケーションが実際にデバッグされているかどうかを確認します。 –

+0

はい、これはEclipseから起動できる少なくとも2つの異なる方法の1つです。 –

+0

Eclipseデバッガから実行したときにこれを試してみました(ランチャーから実行すると偽)。 Eclipseから「通常」のアプリを実行すると、falseも返されます。デバッガの下で実行すると、すべての使用のための少しヘビー級ですが、多分私はそれに慣れることができます。 –

1

if (BuildConfig.DEBUG) を使用すると、リリースビルドからデバッグビルドに伝えることができます。

+0

これも便利ですが、注意する必要があります。BuildConfig.DEBUGをtrueに設定してリリースビルドを取得することがあるようです。 [ここ](https://code.google.com/p/android/issues/detail?id=27940)と[ここ](http://www.digipom.com/be-careful-with-buildconfig-デバッグ/)。 –

+0

これはビルドのプロパティ(アプリケーションの定数)です。私は(デバッグビルド)アプリケーションがどのように起動されるかによって変化するものをテストしたいと思います。 –

1

あなたは(I?)あなたのアプリに新しいアクティビティを追加して、Eclipseにそれを起動させることができます。新しいアクティビティは、さもなければ設定されないフラグを設定し、それ以外の場合は同じフラグを設定します。アプリの通常の使用はデフォルトのアクティビティを介して行われるため、フラグはデフォルトで設定解除されます。

既存のアクティビティを(MainActivityそれを呼び出す)延びるDebugActivity新しいを追加します。

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; 
} 

アプリマニフェストの<activity>情報を.MainActivityに重複しますが、複製を変更して新しい.DebugActivityを参照してください。 .DebugActivity<intent-filter>から<category>タグ(「LAUNCHER」のタグ)を削除して、Android UIに表示されないようにします。

Eclipseでは、Run -> Run Configurations ...を選択してください。アプリの既存の実行設定を選択します。 [現在選択されている起動設定を複製する]アイコンをクリックし、複製のを[Launch Default Activity]から[Launch:]に変更し、新しい.DebugActivityを選択します。 (基本的にはちょうど打ち上げクラス名とスタック上の余分なエントリ)

マイナス面

  1. Eclipseの「デバッグは」ランは「本物の」実行するために同一ではないが、その差はかなり小さく、 。少なくとも、Java側には重複したコードはありません。

  2. 私は<activity>の内容のほとんどをマニフェストに複製しましたが、それはやや壊れやすいものの、それほど悪くはありません。

これよりも簡単なことがあります。

+0

マニフェストのDebugActivityエントリから ''行を削除すると、ランチャーにアイコンとして表示されません:) –

+0

ニース。 1つ少ない欠点...私は答えを更新します。 –

関連する問題