我的问题是我需要从我的网站上得到一块饼干。为了解决这个问题,我有一个类似http://example.com/cookie
的api端点,它使用app schemamyapp://cookie=some_cookie
重定向
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (goToBrowser) { // Going to url which redirects back to this activity
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(intent, RESULT_OK);
} else { // Parcing incoming url
setResult(RESULT_OK);
finish();
}
}
我有一个处理应用程序架构的
Activity
。如果我不能改变班级,我怎么能得到some_cookie
?更新:
我设法用答案获得cookie,但是当我调用
appActivity
时,它返回到浏览器,而不是返回到活动,活动称为浏览器更新2:
我更新了代码,添加了flag,但是行为是一样的
最佳答案
您可以使用嗅探器活动:
1:从androidmanifest.xml的当前处理活动中注销现有活动的intent筛选器(删除intent filter data/scheme/host/path)
2:您可以创建一个新的cookiesnifferactivity,并使用完全相同的外部意图过滤器(从现有活动中删除的数据)将其注册到androidmanifest.xml中,例如:
<activity android:name=".my.package.CookieSnifferActivity">
<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:scheme="http" />
<data android:host="example.com" />
<data android:pathPrefix="cookie"/>
</intent-filter>
</activity>
3:在新的CookieSnifferActivity的onCreate中,您现在应该能够读取cookie数据:
getIntent().getData().getPath()
4:在CookieSnifferActivity的onActivityResult()中,转发输出结果:
protected void onActivityResult (int requestCode, int resultCode, Intent data){
setResult(resultCode)
finish();
//...
}
5:最后,您只想将嗅探到的意图转发到先前的处理活动:
Intent forwarded = new Intent(getIntent());
forwarded.setClass(getPackageName(), "example.package.PreviousProcessingActivity");
startActivityForResult(forwarded, 0);