2011-10-18 10 views
0

私はインテント経由でシステムブラウザを起動するアクティビティを持っています。短くする前に私は他のURLにHTTP GETをします。このGETは、ユーザーがブラウザでタスクを完了するとすぐに応答されます(OAuthを使用してログインします)。バックグラウンドスレッドから前面にAndroidのアクティビティを持ち込む

ブラウザを終了したり、アプリケーションのアクティビティを前面に戻したりできます。

WebViewを使用したくない理由は、パスワードを偵察しようとしている可能性があるという認識を避けるためです。

これを解決する方法はありますか?まったく可能ですか?

ありがとうございました!

ダニエル

+0

私が思うに、デフォルトのブラウザの実装トラップをバックMainActivityで

は、私がgetContextメソッドを追加しました(Intent Flagsを使用して新しいタスクとしてブラウザを起動していないと仮定して)タスクスタックからブラウザアクティビティを削除するのではなく、以前のサイトに戻るためにキーを使用します。私も解決策に興味があります... – ethan

+0

これはバックグラウンドプロセスがしなければならないことのようなものではありません。むしろユーザーが自由に応答できる通知を作成します。 – user999717

答えて

1

です。これは私のプロジェクトでのトリックです。トリックはであることを

public class AlarmThread extends Thread { 

    private int mSleepTime; 

    public AlarmThread(int sleepSeconds) { 
     super("AlarmThread"); 
     mSleepTime = sleepSeconds * 1000; 
    } 
    @Override 
    public void run() { 
     Log.i("thread", "started sleeping for " + mSleepTime + " milliseconds"); 
     try { 
      Thread.sleep(mSleepTime); 
     } catch (InterruptedException e) { 
      // ignored 
     } 
     Log.i("thread", "creating intent to bring activity to foreground"); 
     Intent intent = new Intent(MainActivity.getContext(), MainActivity.class); 
     intent.setAction(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     MainActivity.getContext().getApplicationContext().startActivity(intent); 
    } 
} 

注:アクティビティを再表示するために意図を送り、バックグラウンドスレッドのコードスニペットここ

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

です:

アプリケーションマニフェストはかなり標準ですMainActivity.getContext().getApplicationContext().startActivity(intent);部分(上記最後の行)。 'のonCreate' に設定されている

public static Context getContext() { 
    return mInstance; 
} 

そしてメンバーのmInstance ':

private static MainActivity mInstance = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Other code.... 

    mInstance = this; 
} 
関連する問題