我的问题是我需要从我的网站上得到一块饼干。为了解决这个问题,我有一个类似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);

09-30 12:34