我能否在安卓系统上覆盖自动超时?

3
我正在使用Twitter4J发布推文,但您需要在浏览器中打开并从Twitter获取一个pin码,以便我的应用程序能够执行此操作,这样做是有效的。但当我返回到我的应用程序时,活动会超时并关闭。有没有办法保持我的活动处于打开状态?WebView不起作用,因为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();
    }*/

}

1
所有这些代码都是必要的吗?请尽量只发布相关片段,以便我们更好地理解您。 - mre
1个回答

1

我最终编写了一个解决方法。谢谢你的帮助,这真的帮助我学习了活动是如何工作的。 - Robin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接