0

Intent を介してシステム ブラウザを起動するアクティビティがあります。その少し前に、他の URL に対して HTTP GET を実行します。この GET は、ユーザーがブラウザーでタスクを完了するとすぐに応答されます (OAuth を使用してログインします)。

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

パスワードをスパイしようとしている可能性があるという認識を避けたいので、WebView を使用したくありません。

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

本当にありがとう!

ダニエル

4

2 に答える 2

1

OAuthがyourapp://successのようなURLを開くことを確認してください

次に、このカスタムプロトコルとアドレスを処理するためのインテントフィルターを追加します。詳細については、http://developer.android.com/guide/topics/intents/intents-filters.html#ifsをご覧ください。

于 2011-10-18T04:29:08.107 に答える
1

私のプロジェクトでトリックを行ったのは次のとおりです。

アプリケーション マニフェストは非常に標準的です。

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

アクティビティを再表示するインテントを送信するバックグラウンド スレッドのコード スニペットを次に示します。

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

トリックはそのMainActivity.getContext().getApplicationContext().startActivity(intent);部分にあることに注意してください (上記の最後の行)。

MainActivity に、次のgetContextメソッドを追加しました。

public static Context getContext() {
    return mInstance;
}

また、メンバー「mInstance」は「onCreate」に設定されています。

private static MainActivity mInstance = null;

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

    // Other code....

    mInstance = this;
}
于 2013-10-08T13:47:37.977 に答える