java - 我可以覆盖 Android 上的自动超时吗?

标签 java android twitter android-activity twitter4j

我正在使用 Twitter4J 发布到 Twitter,但你必须打开浏览器并从 Twitter 获取一个 pin,我的应用程序才能执行此操作,但当我返回到我的应用程序时, Activity 超时并且自己关闭。有没有办法让我的 Activity 保持开放状态? Web View 不起作用,因为 Twitter 不允许您使用常规路径进行授权。

public void TwitterSend () {
    // The factory instance is re-useable and thread safe.
    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(consumer_token, consumer_secret);

    //WebView webview = (WebView) findViewById(R.id.webview);
    //webview.setVisibility(View.VISIBLE);
    //ScrollView sc = (ScrollView) findViewById(R.id.scrollView1);
    //sc.setVisibility(View.VISIBLE);
    EditText edit = (EditText) findViewById(R.id.editText1);
    edit.setVisibility(View.VISIBLE);
    RequestToken requestToken = null;
    try {
        requestToken = twitter.getOAuthRequestToken();
        System.out.println(requestToken.toString());
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    AccessToken accessToken = null;

    //webview.loadUrl("https://api.twitter.com/oauth/authorize");
    Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse(requestToken.getAuthorizationURL()));
    browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(browserIntent);


      System.out.println("Open the following URL and grant access to your account:");

      System.out.print("Enter the PIN(if aviailable) or just hit enter.[PIN]:");
      String pin = edit.getText().toString();
    CountDownTimer timer = new CountDownTimer(900000, 1000) {

        public void onTick(long millisUntilFinished) {
        }


        public void onFinish() {

        }
     };
     timer.start();
      while(pin.length()<7)
      {
          pin = edit.getText().toString();
      }
      System.out.print(pin);
      try{
         if(pin.length() > 0){
           accessToken = twitter.getOAuthAccessToken(requestToken, pin);
         }else{
           accessToken = twitter.getOAuthAccessToken();
         }
      } catch (TwitterException te) {
        if(401 == te.getStatusCode()){
          System.out.println("Unable to get the access token.");
            edit.setVisibility(View.GONE);
        }else{
          te.printStackTrace();
        }
      }

    //persist to the accessToken for future reference.
    Status status = null;
    try {

        SharedPreferences stats = getSharedPreferences(PREFS_NAME, 0);
        String quote = stats.getString("shareQuote", "An error has occured. We are Sorry.");
        status = twitter.updateStatus(quote);
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        //webview.setVisibility(View.GONE);
        //edit.setVisibility(View.GONE);
    }
     Toast.makeText(getApplicationContext(), "Successfully updated the status to [" + status.getText() + "].", Toast.LENGTH_LONG).show();
    System.out.println("Successfully updated the status to [" + status.getText() + "].");
   // webview.setVisibility(View.GONE);
    edit.setVisibility(View.GONE);
    //sc.setVisibility(View.GONE);
    /*WebView webview = (WebView) findViewById(R.id.webview);
    webview.setVisibility(View.VISIBLE);
    Twitter twitter=new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(consumer_token, consumer_secret);
    AccessToken a = new AccessToken(oauth_token, oauth_token_secret);
    twitter.setOAuthAccessToken(a);
    try {
        RequestToken requestToken = twitter.getOAuthRequestToken("https://api.twitter.com/oauth/request_token");
        webview.loadUrl("https://api.twitter.com/oauth/authorize");
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }*/

}

最佳答案

在 Android 中,尝试强制 Activity 保持打开状态通常是一个坏主意 - 处理 Activity 被销毁的最佳方法是确保您正确处理所有 Activity 的生命周期回调。此页面很有帮助:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

如果您正确地保存了您的 Activity 状态,您应该不会遇到系统停止它的问题。

关于java - 我可以覆盖 Android 上的自动超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222540/

相关文章:

java - 来自 OAuth 的回调不调用 onResume()

java - JDialog打开速度很慢

java - 我应该使用 Listener 还是 Observer?

java - 不可变对象(immutable对象)和更新

javascript - android webview javascript 有时无法加载

android - ImageButton 在类里面不起作用

android - 在 APK 文件中嵌入登录详细信息,每个用户不同(或其他选项?)

node.js - Socket.io 失败 : WebSocket is closed before the connection is established

javascript - Cordova 项目中的"TwitterConnect is not defined"

java - spring boot 初始化报​​错