如何使用yamba-8教程在android的status.Net中发布状态更新

如何使用yamba-8教程在android的status.Net中发布状态更新,android,twitter,Android,Twitter,实际上,我在安卓系统中遇到了一个问题。我正在创建一个应用程序,它连接到一个名为Status.Net的类似Twitter的应用程序。我已经用我自己的用户名和密码在这个网站上创建了一个帐户。现在,我创建的应用程序连接到这个Status.Net站点。最初,这个android应用程序是从Marko Gargenta开发的一个名为learning android的学习android网站上获得的,我从它的git上下载了源代码。我正在通过将不同的API根指定为farmnews.aaditech.com/API

实际上,我在安卓系统中遇到了一个问题。我正在创建一个应用程序,它连接到一个名为Status.Net的类似Twitter的应用程序。我已经用我自己的用户名和密码在这个网站上创建了一个帐户。现在,我创建的应用程序连接到这个Status.Net站点。最初,这个android应用程序是从Marko Gargenta开发的一个名为learning android的学习android网站上获得的,我从它的git上下载了源代码。我正在通过将不同的API根指定为farmnews.aaditech.com/API(最初是API根)来创建我自己的应用程序版本。具有原始API根的代码运行良好。它更新了yamba.marakana.com中的状态,并且该状态也显示在时间线中。但是,当我指定自己的API根目录时,它只会更新到status.net,并显示一条toast消息“Failed To Post”,这条消息显然不应该是在status.net上发布的。我不知道问题出在哪里。但我知道,只要更改API根的一行,一切都会正常工作

YambaApplication.java

package com.marakana.yamba8;
导入java.util.List;
导入winterwell.jtwitter.Twitter;
导入winterwell.jtwitter.Twitter.Status;
导入android.app.Application;
导入android.content.ContentValues;
导入android.content.SharedReferences;
导入android.content.SharedReferences.OnSharedPreferenceChangeListener;
导入android.preference.PreferenceManager;
导入android.text.TextUtils;
导入android.util.Log;
公共类YambaApplication扩展了应用程序实现
OnSharedPreferenceChangeListener{
私有静态最终字符串标记=YambaApplication.class.getSimpleName();
公共静态最终字符串位置\u提供程序\u NONE=“NONE”;
公共静态最终长间隔_从不=0;
公共推特;
私人共享参考优先权;
私有状态数据;
私有布尔服务运行;
私有布尔内联线;
@凌驾
public void onCreate(){
super.onCreate();
this.prefs=PreferenceManager.getDefaultSharedReferences(this);
this.prefs.RegisterOnSharedReferenceChangeListener(this);
this.statusData=新状态数据(this);
Log.i(标记“应用程序已启动”);
}
公共同步Twitter getTwitter(){
if(this.twitter==null){
字符串用户名=this.prefs.getString(“用户名”,null);
字符串密码=this.prefs.getString(“密码”,null);
//String url=this.prefs.getString(“url”,
//  "http://yamba.marakana.com/api");
String url=this.prefs.getString(“url”,
"http://farmnews.aaditech.com/index.php/api"); //1
//String url=this.prefs.getString(“url”,
//"http://identi.ca/api");
//String url=this.prefs.getString(“url”,
//"http://farmnews.aaditech.com");
如果(!TextUtils.isEmpty(用户名)和&!TextUtils.isEmpty(密码)
&&!TextUtils.isEmpty(url)){
this.twitter=新twitter(用户名、密码);
this.twitter.setAPIRootUrl(url);
}
}
返回this.twitter;
}
公共布尔startOnBoot(){
返回此.prefs.getBoolean(“startOnBoot”,false);
}
公共状态数据getStatusData(){
返回状态数据;
}
公共同步int-fetchStatusUpdates(){
Log.d(标记“获取状态更新”);
Twitter=this.getTwitter();
if(twitter==null){
Log.d(标记“Twitter连接信息未初始化”);
返回0;
}
试一试{
List statusUpdates=twitter.getFriendsTimeline();
long latestStatusCreatedAtTime=this.getStatusData()
.getLatestStatusCreatedAtTime();
整数计数=0;
ContentValues=新的ContentValues();
用于(状态:状态更新){
value.put(StatusData.C_ID,status.getId());
long createdAt=status.getCreatedAt().getTime();
value.put(StatusData.C_CREATED_AT,createdAt);
value.put(StatusData.C_TEXT,status.getText());
value.put(StatusData.C_USER,status.getUser().getName());
Log.d(标记“Got update with id”+status.getId()+“.Saving”);
this.getStatusData().insertOrIgnore(值);
如果(latestStatusCreatedAtTime0?“获得“+计数+”状态更新”
:“无新状态更新”);
返回计数;
}捕获(例外e){
Log.e(标记“无法获取状态更新”,e);
返回0;
}
}
已更改共享首选项上的公共同步无效(
SharedReferences SharedReferences,字符串键){
this.twitter=null;
}
公共布尔值isServiceRunning(){
返回服务运行;
}
公共void设置服务运行(布尔服务运行){
this.serviceRunning=serviceRunning;
}
公共布尔值isInTimeline(){
返回英替米林;
}
public void setInTimeline(布尔inTimeline){
this.inTimeline=inTimeline;
}
公共字符串getProvider(){
返回prefs.getString(“提供者”,位置\提供者\无);
}
公共长getInterval(){
//由于某些原因,将间隔存储为long不起作用
返回Long.parseLong(prefs.getString(“interval”,“0”));
}
@凌驾
公共无效终止(){
super.onTerminate();
this.statusData.close();
Log.i(标记“应用程序终止”);
}
}
日志猫

10-28 00:36:04.964:错误/YambaApplication(844):获取状态更新失败
10-28 00:36:04.964:ERROR/YambaApplication(844):winterwell.jtwitter.TwitterException:org.json.jsoneException:profile\u background\u color没有值
10-28 00:36:04.964:ERROR/YambaApplication(844):位于winterwell.jtwitter.Twitter$User。(Twitter.java:693)
10-28 00:36:04.964:ERROR/YambaApplication(844):在winterwell.jtwitter.Twitter$Status。(Twitter.java:464)
10-28 00:36:04.964:ERROR/YambaApplication(844):在winterwell.jtwitter.Twitter$Status.getStatuses(Twitter.java:342)
10-28 00:36:04.964:ERROR/YambaApplication(844):在winterwell.jtwitter.Twitter.getStatuses(Twitter.java:1691)
10-28 00
package com.marakana.yamba8;

import java.util.List;

import winterwell.jtwitter.Twitter;
import winterwell.jtwitter.Twitter.Status;
import android.app.Application;
import android.content.ContentValues;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;

public class YambaApplication extends Application implements
OnSharedPreferenceChangeListener {
private static final String TAG = YambaApplication.class.getSimpleName();
public static final String LOCATION_PROVIDER_NONE = "NONE";
public static final long INTERVAL_NEVER = 0;
public Twitter twitter;
private SharedPreferences prefs;
private StatusData statusData;
private boolean serviceRunning;
private boolean inTimeline;

@Override
public void onCreate() {
super.onCreate();
this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
this.prefs.registerOnSharedPreferenceChangeListener(this);
this.statusData = new StatusData(this);
Log.i(TAG, "Application started");
}

public synchronized Twitter getTwitter() {
 if (this.twitter == null) {
   String username = this.prefs.getString("username", null);
   String password = this.prefs.getString("password", null);
   //String url = this.prefs.getString("url",
   //  "http://yamba.marakana.com/api");
   String url = this.prefs.getString("url",
   "http://farmnews.aaditech.com/index.php/api"); //1
   //String url = this.prefs.getString("url",
   //"http://identi.ca/api");
   //String url = this.prefs.getString("url",
   //"http://farmnews.aaditech.com");

    if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)
      && !TextUtils.isEmpty(url)) {
      this.twitter = new Twitter(username, password);
      this.twitter.setAPIRootUrl(url);
    }
  }
  return this.twitter;
}

 public boolean startOnBoot() {
   return this.prefs.getBoolean("startOnBoot", false);
 }

 public StatusData getStatusData() {
   return statusData;
 }

  public synchronized int fetchStatusUpdates() {
    Log.d(TAG, "Fetching status updates");
    Twitter twitter = this.getTwitter();
    if (twitter == null) {
    Log.d(TAG, "Twitter connection info not initialized");
    return 0;
  }
  try {
    List<Status> statusUpdates = twitter.getFriendsTimeline();
    long latestStatusCreatedAtTime = this.getStatusData()
      .getLatestStatusCreatedAtTime();
    int count = 0;
    ContentValues values = new ContentValues();
    for (Status status : statusUpdates) {
      values.put(StatusData.C_ID, status.getId());
      long createdAt = status.getCreatedAt().getTime();
      values.put(StatusData.C_CREATED_AT, createdAt);
      values.put(StatusData.C_TEXT, status.getText());
      values.put(StatusData.C_USER, status.getUser().getName());
      Log.d(TAG, "Got update with id " + status.getId() + ". Saving");
      this.getStatusData().insertOrIgnore(values);
      if (latestStatusCreatedAtTime < createdAt) {
       count++;
      }
     }
    Log.d(TAG, count > 0 ? "Got " + count + " status updates"
      : "No new status updates");
    return count;
    } catch (Exception e) {
    Log.e(TAG, "Failed to fetch status updates", e);
    return 0;
   }
 }

  public synchronized void onSharedPreferenceChanged(
    SharedPreferences sharedPreferences, String key) {
    this.twitter = null;
  }

  public boolean isServiceRunning() {
     return serviceRunning;
  }

  public void setServiceRunning(boolean serviceRunning) {
    this.serviceRunning = serviceRunning;
  }

  public boolean isInTimeline() {
     return inTimeline;
  }

  public void setInTimeline(boolean inTimeline) {
     this.inTimeline = inTimeline;
  }

  public String getProvider() {
     return prefs.getString("provider", LOCATION_PROVIDER_NONE);
  }

  public long getInterval() {
     // For some reason storing interval as long doesn't work
     return Long.parseLong(prefs.getString("interval", "0"));
  }

  @Override
  public void onTerminate() {
  super.onTerminate();
  this.statusData.close();
  Log.i(TAG, "Application terminated");
  }
}
    10-28 00:36:04.964: ERROR/YambaApplication(844): Failed to fetch status updates
10-28 00:36:04.964: ERROR/YambaApplication(844): winterwell.jtwitter.TwitterException: org.json.JSONException: No value for profile_background_color
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter$User.<init>(Twitter.java:693)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter$Status.<init>(Twitter.java:464)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter$Status.getStatuses(Twitter.java:342)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter.getStatuses(Twitter.java:1691)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter.getFriendsTimeline(Twitter.java:1454)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at com.marakana.yamba8.YambaApplication.fetchStatusUpdates(YambaApplication.java:73)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at com.marakana.yamba8.UpdaterService.onHandleIntent(UpdaterService.java:35)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at android.os.Looper.loop(Looper.java:123)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at android.os.HandlerThread.run(HandlerThread.java:60)
10-28 00:36:04.964: ERROR/YambaApplication(844): Caused by: org.json.JSONException: No value for profile_background_color
10-28 00:36:04.964: ERROR/YambaApplication(844):     at org.json.JSONObject.get(JSONObject.java:354)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at org.json.JSONObject.getString(JSONObject.java:510)
10-28 00:36:04.964: ERROR/YambaApplication(844):     at winterwell.jtwitter.Twitter$User.<init>(Twitter.java:660)
10-28 00:36:04.964: ERROR/YambaApplication(844):     ... 10 more