Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Twitter异常错误:(_Java_Android_Twitter_Twitter4j - Fatal编程技术网

Java Android Twitter异常错误:(

Java Android Twitter异常错误:(,java,android,twitter,twitter4j,Java,Android,Twitter,Twitter4j,开始编写一个简单的android应用程序。其中一部分会提取用户最近的20条推文并将其保存到数据库中。当我运行此程序时,status=twitter.getUserTimeline();抛出其已处理的异常并打印:未能获得时间线权限被拒绝。当我运行非android的同一代码时,它工作正常。我有点困惑。android可能会限制网络连接吗?我使用一些数据库帮助器类,没有包含代码,因为异常是在我使用这些类之前抛出的以下是代码: import twitter4j.Paging; import twitter

开始编写一个简单的android应用程序。其中一部分会提取用户最近的20条推文并将其保存到数据库中。当我运行此程序时,status=twitter.getUserTimeline();抛出其已处理的异常并打印:未能获得时间线权限被拒绝。当我运行非android的同一代码时,它工作正常。我有点困惑。android可能会限制网络连接吗?我使用一些数据库帮助器类,没有包含代码,因为异常是在我使用这些类之前抛出的以下是代码:

import twitter4j.Paging;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;


import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class  TwitterTest extends ListActivity{
 private ArrayList<String> queryString;
 private DatabaseQuery query;






 /* returns date in string format-without time */
 String getThisYearDate(Date d){
  String x = d.toString();
  String y= x.substring(0, 11);
  String z =x.substring(17);
  String a = y.concat(z);
  return a;
 }

 @Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  query = new DatabaseQuery(this);

  /*If file exists then tables in db created successfully*/

  File file = new File("exists.txt");




  boolean success = file.exists();

  if (success==false) {
   try {

    ArrayList<Status> statuses = new ArrayList<Status>();


    Twitter twitter = new TwitterFactory().getInstance("USERNAME", "PASSWORD");



    statuses = twitter.getUserTimeline();

    /* adds status data to database*/
    for(Status s: statuses){

     query.appendData("Text", s.getText());
     query.appendData("Date", this.getThisYearDate(s.getCreatedAt()));
     query.appendData("ID",String.valueOf(s.getId()) );
     query.addRow();
    }



   }
   catch (TwitterException te) {
    System.out.println("Failed to get timeline: " + te.getMessage());

    System.exit( -1);
   }
   try{
    boolean created = file.createNewFile();
   }
   catch (IOException e) {

    System.out.println("error");




   }

   queryString = query.getData(new String[] {"Text"},this.getThisYearDate(new Date()), null, null, null, "Date", " ASC");
   try {
    query.destroy();
   } catch (Throwable e) {
    e.printStackTrace();
   }

  } else {
   // File already exists
   queryString = query.getData(new String[] {"Text"},this.getThisYearDate(new Date()), null, null, null, "Date", " ASC");
   try {
    query.destroy();
   } catch (Throwable e) {
    e.printStackTrace();
   }

  }





 // Set the ListView
 setListAdapter(new ArrayAdapter<String>(this,
   android.R.layout.simple_list_item_1, queryString));
 getListView().setTextFilterEnabled(true);
}
}
导入twitter4j.分页;
导入twitter4j.状态;
导入twitter4j.Twitter;
导入twitter4j.TwitterException;
导入twitter4j.TwitterFactory;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Date;
导入android.app.ListActivity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
公共类TwitterTest扩展了ListActivity{
私有ArrayList查询字符串;
私有数据库查询;
/*返回不带时间的字符串格式的日期*/
字符串getThisYearDate(日期d){
字符串x=d.toString();
字符串y=x.子字符串(0,11);
字符串z=x.子字符串(17);
字符串a=y.concat(z);
返回a;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
查询=新数据库查询(此);
/*如果文件存在,则成功创建数据库中的表*/
File File=新文件(“exists.txt”);
布尔成功=file.exists();
if(success==false){
试一试{
ArrayList status=新建ArrayList();
Twitter=new TwitterFactory().getInstance(“用户名”、“密码”);
status=twitter.getUserTimeline();
/*将状态数据添加到数据库*/
对于(状态s:状态){
appendData(“Text”,s.getText());
query.appendData(“Date”,this.getThisYearDate(s.getCreatedAt());
query.appendData(“ID”,String.valueOf(s.getId());
query.addRow();
}
}
捕获(twitter异常){
System.out.println(“未能获取时间线:+te.getMessage());
系统退出(-1);
}
试一试{
boolean created=file.createNewFile();
}
捕获(IOE异常){
System.out.println(“错误”);
}
queryString=query.getData(新字符串[]{“Text”},this.getThisYearDate(新日期()),null,null,Date,ASC);
试一试{
query.destroy();
}捕获(可丢弃的e){
e、 printStackTrace();
}
}否则{
//文件已存在
queryString=query.getData(新字符串[]{“Text”},this.getThisYearDate(新日期()),null,null,Date,ASC);
试一试{
query.destroy();
}捕获(可丢弃的e){
e、 printStackTrace();
}
}
//设置ListView
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,queryString));
getListView().setTextFilterEnabled(true);
}
}

听起来您好像没有将权限android.permission.INTERNET添加到您的AndroidManifest.xml中。

使用异步任务,它对我有效

public class Asy  extends AsyncTask<String, String, String> { 
static String msg ;
@Override
protected void onPreExecute() {
    super.onPreExecute();

}


protected String doInBackground(String... args) {

   android.tweet(msg);
    return null;
}


protected void onPostExecute(String file_url) {


}
}
然后使用以下代码调用此异步任务:

Asy.msg = "whatever";      // the status I was posting
Asy task3 = new Asy();
task3.execute();`

这对我很有效。祝你好运

谢谢,我把它添加到了我的清单中。不过还是遇到了同样的问题:(我提高了投票率,但好奇地想知道代币真的需要硬编码吗?
Asy.msg = "whatever";      // the status I was posting
Asy task3 = new Asy();
task3.execute();`