J'essaie d'écrire une application qui peut se connecter sur twitter. Ma bibliothèque est Twitter4j. Le code fonctionne jusqu'à ce que la méthode onResume
soit appelée. LeImpossible de reprendre Activity..java.lang.NullPointerException dans Connexion
exception(Unable to resume Activity...NullPointerException)
est à cette ligne dans la méthode
onResume():
AccessToken acc = twitter.getOAuthAccessToken(requestToken,verifier);
Mais je ne comprends pas où est mon erreur. Quelqu'un peut m'aider??
public class MainActivity extends Activity {
private Twitter twitter;
private RequestToken requestToken;
private static RequestToken re;
final public static String CALLBACK_URL = "app://casa";
private RequestToken priv = null;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new updateTwitterStatus().execute();
}
});
}
class updateTwitterStatus extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String testStatus = "prova tweet ";
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("******")
.setOAuthConsumerSecret(
"*******");
try {
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
Log.i("bauu", "miao");
requestToken = twitter.getOAuthRequestToken(CALLBACK_URL);
String authUrl = requestToken.getAuthenticationURL();
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(requestToken.getAuthenticationURL())));
return authUrl;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
}
}
@Override
public void onResume() {
super.onResume();
Uri uri = this.getIntent().getData();
Log.i("callback funziona", "ciao");
if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
final String verifier = uri.getQueryParameter("oauth_verifier");
// c
try { // the next line is the error's line
AccessToken acc = twitter.getOAuthAccessToken(requestToken,
verifier);
} catch (TwitterException e) {
e.printStackTrace();
}
}
}
merci beaucoup je comprends mon erreur ... mais vous pouvez me suggérer une structure de données pour éviter ce problème? – francedema
regardez cela - https://github.com/syndarin/SocNetApi. Il utilise Twitter4j. Portez votre attention sur le fait que le projet a été créé avant la sortie d'Android 4.0 et que quelque part pourrait être un appel réseau dans le thread d'interface utilisateur, ce qui entraînera une exception sur Android 4.0 et supérieur. – Viacheslav