所以我有一个使用OAuth协议进行授权操作的软件。在主菜单中,我有一个启动活动的按钮:
Intent i = new Intent(this, HattrickOAuth.class);
this.startActivityForResult(i,OAUTH_ID);
在 HattrickOAuth 类的onCreate(Bundle savedInstanceState)
方法中,我们需要启动浏览器以将用户重定向到授权页面。我用:
Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); browser.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
browser.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
this.startActivity(browser);
在onResume()中,我完成了授权,并返回调用结果
setResult(RESULT_OK);
finish();
问题是这会回到浏览器而不是菜单上。有什么我想念的吗?要返回,我在清单中使用以下方案:
<activity
android:label="@string/oauth_name"
android:name=".hattrick.HattrickOAuth"
android:theme="@style/MainStyle" >
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="hattrick"
android:scheme="h4m-app" />
</intent-filter>
</activity>