onNewIntent() 在某些设备中没有被调用

2023-11-30

我正在为 Android 应用程序实现 Oauth(twitter、google),一些用户抱怨因为他们无法登录;分析问题后,我发现在某些设备中有时不调用 onNewIntent() 而是调用 onCreate() 方法。所以看来活动的任务、实例有问题……

这是我的代码:

AndroidManifest.xml

<activity
            android:name="LoginActivity"
            android:launchMode="singleTask" 
            android:screenOrientation="portrait">
            <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="callback"
                    android:scheme="x-oauthflow" />
            </intent-filter>
        </activity>
        <activity
            android:name="FirstActivity"
            android:label="@string/app_name"
            android:noHistory="true"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

FirstActivity.java

    btnGoogle = (Button)findViewById(R.id.btnGoogle);
    btnGoogle.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Utils.bInternetConnection(getApplicationContext())) {
                Intent intentGoogle = new Intent(getApplicationContext(), LoginActivity.class);

                Bundle b = new Bundle();
                b.putInt(Constants.SOCIAL_NETWORK, Constants.SOCIAL_NETWORK_GOOGLE);
                intentGoogle.putExtras(b);
                startActivity(intentGoogle);
            } else {
                Utils.showDialog(FirstActivity.this, R.string.no_internet_title, R.string.no_internet_msg);
            }
        }
    });
    btnTwitter = (Button)findViewById(R.id.btnTwitter);
    btnTwitter.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Utils.bInternetConnection(getApplicationContext())) {
                Intent intentTwitter = new Intent(getApplicationContext(), LoginActivity.class);

                Bundle b = new Bundle();
                b.putInt(Constants.SOCIAL_NETWORK, Constants.SOCIAL_NETWORK_TWITTER);
                intentTwitter.putExtras(b);
                startActivity(intentTwitter);
            } else {
                Utils.showDialog(FirstActivity.this, R.string.no_internet_title, R.string.no_internet_msg);
            }
        }
    });

登录活动.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    // Async Load
    new loadPage(this).execute("");

}

/**
 * The callback URL will be intercepted here.
 */
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    ....
    ....

}


private class loadPage extends AsyncTask<String, Integer, Void> {

    private Context context;

     public loadPage(Context context) {
            this.context = context;
     }

    private ProgressDialog pdia;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pdia = new ProgressDialog(LoginActivity.this);
        pdia.setMessage(getString(R.string.loading));
        pdia.setCanceledOnTouchOutside(false);
        pdia.show();
    }

    @Override
    protected Void doInBackground(String... arg0) {
        try {
            Bundle b = getIntent().getExtras();
            int socialNetwork = b.getInt(Constants.SOCIAL_NETWORK);
            _socialNetwork = socialNetwork;

            switch (_socialNetwork) {
            case Constants.SOCIAL_NETWORK_GOOGLE:
                consumer_key = Constants.CONSUMER_KEY_GOOGLE;
                consumer_secret = Constants.CONSUMER_SECRET_GOOGLE;
                url_request_token = Constants.URL_REQUEST_TOKEN_GOOGLE
                        + "?scope="
                        + URLEncoder
                                .encode(Constants.SCOPE_GOOGLE, "utf-8");
                url_access_token = Constants.URL_ACCESS_TOKEN_GOOGLE;
                url_authorize_token = Constants.URL_AUTHORIZE_TOKEN_GOOGLE;
                break;
            case Constants.SOCIAL_NETWORK_TWITTER:
                consumer_key = Constants.CONSUMER_KEY_TWITTER;
                consumer_secret = Constants.CONSUMER_SECRET_TWITTER;
                url_request_token = Constants.URL_REQUEST_TOKEN_TWITTER;
                url_access_token = Constants.URL_ACCESS_TOKEN_TWITTER;
                url_authorize_token = Constants.URL_AUTHORIZE_TOKEN_TWITTER;
                break;
            }

            // Google & Twitter

                consumer = new CommonsHttpOAuthConsumer(consumer_key,
                        consumer_secret);

                provider = new CommonsHttpOAuthProvider(url_request_token,
                        url_access_token, url_authorize_token);

                // Get authUrl
                String authUrl = provider.retrieveRequestToken(consumer,
                        callBack.toString());

                // Bring the user to authUrl
                Intent intent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse(authUrl))
                        .setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
                                | Intent.FLAG_ACTIVITY_NO_HISTORY
                                | Intent.FLAG_FROM_BACKGROUND);
                context.startActivity(intent);


        } catch (Exception e) {
            Log.e(Constants.TAG, "Oauth error", e);
            // Redirect to Login Page
            Intent intentFirst = new Intent(getApplicationContext(),
                    FirstActivity.class);
            startActivity(intentFirst);
            finish();
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void unused) {
        if (pdia.isShowing()){
            pdia.dismiss();
        }           
    }
}

有任何想法吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

onNewIntent() 在某些设备中没有被调用 的相关文章

随机推荐

  • 从 SQL Server 到外部应用程序的消息 (activemq)

    我的系统中安装了 SQL Server 数据库和 Activemq 我尝试创建端点来监听 activemq 所在的端口 端口是61617 CREATE ENDPOINT InstInitiatorEndpoint STATE STARTED
  • Android 清单使用权限与 Android 设备规格

    有什么方法可以检查原因吗我的安卓应用程序不显示在Play Store在某些设备上 例如Samsung Galaxy S Duos Samsung Ace Plus and Micromax A110ETC 虽然我可以通过安装我的应用程序US
  • 使用 Directory.Getfiles 并指定绝对路径

    嗨 我想知道你们是否可以帮忙 我正在编写一个应用程序 该应用程序将运行在多个服务器上 因此有多个 IP 我不想使用确切的 IP 和目录结构 而是想从应用程序实际运行的位置 后退 一个文件夹 那么例如 文件夹结构是 controls 这包含
  • 字符串到字符串的压缩算法?

    我正在寻找一种算法 可以将一些字符串压缩为另一个字符串 即没有 0 或特殊控制字符 但我在互联网上找不到任何内容 有这样的算法吗 它不必特别高效 只需一些基本的东西即可 Easy echo Hello world gzip c base64
  • 使用 COUNT(DISTINCT ...) 时出现 BigQuery 错误“响应太大而无法返回”

    我有一个大约 20M 行的数据集 我正在观察以下行为 下面的查询返回错误 响应太大而无法返回 id 字段在多个记录之间共享 field 字段对于每个记录都有一些任意值 我预计结果集应该只包含 10 行 远低于查询响应限制 SELECT id
  • 在具有相似名称的多个数据帧上使用 rbind() 的优雅方法?

    目前 我有多个同名且按运行顺序排列的数据帧 foo1 foo2 foo3 foo4 foo5 ETC 我正在尝试创建一个包含上述数据帧的所有行的大型数据帧rbind 有没有一种优雅的方法来做到这一点 这相当于rbind foo1 foo2
  • 如何在Python中获取文件中的字节偏移量

    我正在使用 hadoop 和 python 制作倒排索引 我想知道如何在 python 中包含行 字的字节偏移量 我需要这样的东西 hello hello txt 1124 我需要制作完整倒排索引的位置 请帮忙 像这样 file tell
  • 动态加载 less.js 规则

    我正在考虑使用less js 看起来很棒 但我们的网站要求在初始页面加载后动态加载某些样式 然而 似乎所有 LESS 样式表都必须在 less js 脚本加载之前加载 即这有效 但如果交换行就会失败 Firefox 和 chrome 似乎都
  • 如何使用python计算地球表面多边形的面积?

    标题基本上说明了一切 我需要使用 Python 计算地球表面多边形内的面积 计算地球表面任意多边形包围的面积对此说了一些话 但对技术细节仍然含糊其辞 如果你想用更多的方法来做到这一点 GIS 风味 那么你需要选择 您所在地区的计量单位以及
  • Azure 自定义脚本扩展。以另一个用户身份执行脚本

    我使用 command1 ps1 脚本在目标 VM 上安装 Azure 自定义脚本扩展并执行 command2 ps1 command2 ps1 应该以域管理员身份运行脚本 位于 ScriptBlock 内 因此 Credential Cr
  • 禁用特定月份 JqueryUI datepicker

    我正在创建一个包含 jQuery UI Datepicker 的预订表单 现在我有一个需要帮助的主要问题 有些旅行只有特定日期有效 并且只能在特定月份出售 因为例如旋风季节 禁用特定工作日的功能非常完美 但我不确定如何停用完整的月份 例如十
  • 为什么“git分支”在新存储库中保持沉默?

    当您创建新存储库并运行git branch 它默默地退出 例如 mkdir tmp foo cd tmp foo git init Initialized empty Git repository in tmp foo git git br
  • 对可能不包含协议的字符串运行 parse_url()

    我正在尝试从用户输入的 URL 字符串中获取域名和 TLD 无子域 该字符串可能有也可能没有协议 目录 子域 文件名等 换句话说 考虑到以下任一情况 example com www example com sub example com e
  • GDI 渲染到 direct2D ID2D1BitmapRenderTarget 始终是透明的

    我想将我的电影渲染软件从 DirectDraw 移植到 Direct2D 由于兼容性问题 GDI 渲染需要在图像之上完成 为了优化性能我想实现某种后备缓冲机制 但是alpha通道信息似乎有问题 所有 GDI 绘图都显得透明 我创建一个ID2
  • 根据产品类别拒绝在 Woocommerce 中结帐特定购物车商品

    基于仅当购物车中有强制类别的产品时才允许结帐我尝试制作自己的代码示例 如果购物车出现 则呈现通知并阻止结账 仅包含特定类别的产品 它可以预防和错误通知 但在添加其他产品时 它仍然拒绝结帐 Renders a notice and preve
  • 字符编码检测算法

    我正在寻找一种检测文档中字符集的方法 我一直在这里阅读 Mozilla 字符集检测实现 通用字符集检测 我还找到了一个名为 jCharDet 的 Java 实现 JCharDet 这两者都是基于使用一组静态数据进行的研究 我想知道是否有人成
  • 使用 onAuthStateChanged 的​​ Firebase 切换标头选项

    如果我的问题已经提出 我很抱歉 我是 React 的初学者 我真的很想学习如何做到这一点并理解 我在 React JS 项目上使用 Firebase 并且希望在用户连接或未连接时切换标头的一部分 我认为使用条件渲染但在 if 之后的 fir
  • 在 FROM 子句中带有参数的存储过程中使用 LIKE 和 %

    我正在创建一个网页来托管数据库 我希望此网页具有搜索框功能 可以为 SSMS 2014 中的表更新 Visual Studio 2017 中的 GridView 我希望这个 GridView 是动态的 因为最终用户可以选择一个表 一个列 然
  • 如何将 TypeFace 设置为 PagerTabStrip 文本视图

    在我的应用程序中我使用的是浏览器 with a 寻呼机标签条我需要为我的小部件设置自定义字体 设置字体Button or a TextView我只是扩展类并设置字体 public class MyButton extends Button
  • onNewIntent() 在某些设备中没有被调用

    我正在为 Android 应用程序实现 Oauth twitter google 一些用户抱怨因为他们无法登录 分析问题后 我发现在某些设备中有时不调用 onNewIntent 而是调用 onCreate 方法 所以看来活动的任务 实例有问