안드로이드 개발 질문/답변
(글 수 45,052)
어제까지해서 힘들게 트위터로 텍스트 쏴보내는부분은 끝냈는데요 아침에와서 일찍 xml디자인부분 가라로 대충 끝내고 이제진짜 마지막을 향해가네요; 이번엔 트위터에 텍스트쏠때 동시에 이미지를 등록할건데요..
이게 의외로 상당히 정보가없네요 ;게시판검색에 이미지부분은 하나도없고 네이버 블로그에 하나 있긴한데 다른 정보까지 같이있어서 좀 해깔리네요.
*추가
괜찮은 정보있는데 찾아서 주소 적어둘게요 전 여기서보고 하고있습니다 다른분들도 참고하시면 좋겠네요
여기서보고 빨간색이 제가 추가한 부분이고 형관팬이 오류나는 부분입니다.
public class BookShelf_twitter extends Activity{
public static final String TWITPIC_API_KEY = "51e554089c667a3c05d6f5a63992f08b";
public static String consumerKey = "NgYAODRth11mV5SIA";
public static String consumerSecret = "JY7qHNXTsXOLg1iUU2ZkySDWfL2qaX1WaBdnTIMHDeQ";
public static Uri CALLBACK_URL = Uri.parse("wefu://twitter");
public static final String TWITPIC_API_KEY = "51e554089c667a3c05d6f5a63992f08b";
public static String consumerKey = "NgYAODRth11mV5SIA";
public static String consumerSecret = "JY7qHNXTsXOLg1iUU2ZkySDWfL2qaX1WaBdnTIMHDeQ";
public static Uri CALLBACK_URL = Uri.parse("wefu://twitter");
---중략
private void getAccessToken3() {
try{
edit = (EditText)findViewById(R.id.edittext);
twitter.setOAuthAccessToken(acToken.getToken(), acToken.getTokenSecret());
Configuration config = new ConfigurationBuilder().build();
OAuthAuthorization oauth = new OAuthAuthorization(config, C.TWITTER_CONSUMER_KEY, C.TWITTER_CONSUMER_SECRET, new AccessToken(accessToken, accessTokenSecret));
try{
edit = (EditText)findViewById(R.id.edittext);
twitter.setOAuthAccessToken(acToken.getToken(), acToken.getTokenSecret());
Configuration config = new ConfigurationBuilder().build();
OAuthAuthorization oauth = new OAuthAuthorization(config, C.TWITTER_CONSUMER_KEY, C.TWITTER_CONSUMER_SECRET, new AccessToken(accessToken, accessTokenSecret));
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File picture = new File(path + image); //image는 파일이름 들어있는 스트링문자열입니다path는 저장주소같구요
File picture = new File(path + image); //image는 파일이름 들어있는 스트링문자열입니다path는 저장주소같구요
ImageUpload uploader = TweetPhotoOAuthUploader.getTwitpicUploader(C.TWITPIC_API_KEY, oauth);
String strResult = uploader.upload(picture , "");
String strResult = uploader.upload(picture , "");
twitter.updateStatus(Result+" MyComent : "+edit.getText().toString() + " " + strResult);
Toast.makeText(BookShelf_twitter.this, "twitterに伝送しました", Toast.LENGTH_LONG).show();
}
catch (TwitterException te) {
te.printStackTrace();
Toast.makeText(BookShelf_twitter.this, "伝送が失敗しました", Toast.LENGTH_LONG).show();
}
}
}
import는 컨트롤 시프트 o 눌러서 해주고 오류나는부분은 마우스 갔다가 대니까 임폴트 하라고 하는부분있어서 누르니까 대부분없어지고 남은게 저겁니다.
소스 좀더 보니까 String strResult = uploader.upload(picture , ""); 이부분은 어차피 그림 올리는거랑은 상관없이
URL 리턴받아서 텍스트옆에 + 주소 출력하는거같은데 ;맞을까요? 굳이 필요없다면 에러가 하나 줄어들긴하는데 ㅠ
problem 누르면 아래와같이 나옵니다(스샷첨부가 안되네요 ㅠㅠ)
accessToken cannot be resolved to a variable
accessTokenSecret cannot be resolved to a variable
C cannot be resolved to variable
The method upload(String, InputStream) in the type ImageUpload is nt applicable for the~
TweetPhotoOAuthUploader cannot be resolved
답변 부탁드립니다 ㅠ
아래는 혹시모르니 전체소스입니다, 굳이 필요없다 생각하시는분은 안보셔도 됩니다
package com.utec.swc.bookshelf_lite;
import java.io.File;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.http.AccessToken;
import twitter4j.http.OAuthAuthorization;
import twitter4j.http.RequestToken;
import twitter4j.util.ImageUpload;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.http.AccessToken;
import twitter4j.http.OAuthAuthorization;
import twitter4j.http.RequestToken;
import twitter4j.util.ImageUpload;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.utec.swc.database.Database_Class_MakeDatabase;
public class BookShelf_twitter extends Activity{
public static final String TWITPIC_API_KEY = "";
public static String consumerKey = "";
public static String consumerSecret = "";
public static Uri CALLBACK_URL = Uri.parse("wefu://twitter");
//public static Uri CALLBACK_URL = Uri.parse("http://twitter.com/oauth/authorize");
private Twitter twitter;
private AccessToken acToken;
private RequestToken rqToken;
private Status status = null;
private WebView webview;
private String TAG = "Test";
private EditText et;
private Button bt, dbbtn2;
private LinearLayout ll;
private RelativeLayout rl;
private String pin;
private EditText edit;
Database_Class_MakeDatabase dbHelper;
EditText mText;
SQLiteDatabase db;
ContentValues row;
String Result = "";
String image="";
private AccessToken acToken;
private RequestToken rqToken;
private Status status = null;
private WebView webview;
private String TAG = "Test";
private EditText et;
private Button bt, dbbtn2;
private LinearLayout ll;
private RelativeLayout rl;
private String pin;
private EditText edit;
Database_Class_MakeDatabase dbHelper;
EditText mText;
SQLiteDatabase db;
ContentValues row;
String Result = "";
String image="";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.twitter_text);
et = (EditText) findViewById(R.id.pintext);
et.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
webview = (WebView) findViewById(R.id.webView);
bt = (Button) findViewById(R.id.runbt);
dbbtn2 = (Button) findViewById(R.id.DBbtn2);
ll = (LinearLayout) findViewById(R.id.ll);
rl = (RelativeLayout) findViewById(R.id.rl);
dbHelper = new Database_Class_MakeDatabase(this);
mText = (EditText)findViewById(R.id.edittext);
super.onCreate(savedInstanceState);
setContentView(R.layout.twitter_text);
et = (EditText) findViewById(R.id.pintext);
et.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
webview = (WebView) findViewById(R.id.webView);
bt = (Button) findViewById(R.id.runbt);
dbbtn2 = (Button) findViewById(R.id.DBbtn2);
ll = (LinearLayout) findViewById(R.id.ll);
rl = (RelativeLayout) findViewById(R.id.rl);
dbHelper = new Database_Class_MakeDatabase(this);
mText = (EditText)findViewById(R.id.edittext);
getRequestToken();
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAccessToken();
}
});
dbbtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
Result = (intent.getStringExtra("TextIn"));
image = (intent.getStringExtra("ImageIn"));
getAccessToken3();
finish();
}
});
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && CALLBACK_URL.getScheme().equals(uri.getScheme())) {
String oauth_verifier = uri.getQueryParameter("oauth_verifier");
try {
acToken = twitter.getOAuthAccessToken(rqToken, oauth_verifier);
status = twitter.updateStatus("test twitter4j web application oauth");
} catch (TwitterException e) {
Log.e(TAG, e.getMessage());
}
}
}
private void getRequestToken() {
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
try {
rqToken = twitter.getOAuthRequestToken();
webview.loadUrl("rqToken.getAuthorizationURL();
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.getSettings().setJavaScriptEnabled(true);
} catch (TwitterException e) {
e.printStackTrace();
}
}
private void getAccessToken() {
pin = et.getText().toString();
try {
acToken = twitter.getOAuthAccessToken(rqToken, pin);
} catch (TwitterException e) {
e.printStackTrace();
}
ll.setVisibility(View.GONE);
rl.setVisibility(View.VISIBLE);
}
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAccessToken();
}
});
dbbtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
Result = (intent.getStringExtra("TextIn"));
image = (intent.getStringExtra("ImageIn"));
getAccessToken3();
finish();
}
});
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && CALLBACK_URL.getScheme().equals(uri.getScheme())) {
String oauth_verifier = uri.getQueryParameter("oauth_verifier");
try {
acToken = twitter.getOAuthAccessToken(rqToken, oauth_verifier);
status = twitter.updateStatus("test twitter4j web application oauth");
} catch (TwitterException e) {
Log.e(TAG, e.getMessage());
}
}
}
private void getRequestToken() {
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
try {
rqToken = twitter.getOAuthRequestToken();
webview.loadUrl("rqToken.getAuthorizationURL();
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.getSettings().setJavaScriptEnabled(true);
} catch (TwitterException e) {
e.printStackTrace();
}
}
private void getAccessToken() {
pin = et.getText().toString();
try {
acToken = twitter.getOAuthAccessToken(rqToken, pin);
} catch (TwitterException e) {
e.printStackTrace();
}
ll.setVisibility(View.GONE);
rl.setVisibility(View.VISIBLE);
}
@SuppressWarnings("deprecation")
private void getAccessToken3() {
try{
edit = (EditText)findViewById(R.id.edittext);
twitter.setOAuthAccessToken(acToken.getToken(), acToken.getTokenSecret());
private void getAccessToken3() {
try{
edit = (EditText)findViewById(R.id.edittext);
twitter.setOAuthAccessToken(acToken.getToken(), acToken.getTokenSecret());
Configuration config = new ConfigurationBuilder().build();
OAuthAuthorization oauth = new OAuthAuthorization(config, C.TWITTER_CONSUMER_KEY, C.TWITTER_CONSUMER_SECRET, new AccessToken(accessToken, accessTokenSecret));
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File picture = new File(path + image);
File picture = new File(path + image);
ImageUpload uploader = TweetPhotoOAuthUploader.getTwitpicUploader(C.TWITPIC_API_KEY, oauth);
twitter.updateStatus(Result+" MyComent : "+edit.getText().toString());
Toast.makeText(BookShelf_twitter.this, "twitterに伝送しました", Toast.LENGTH_LONG).show();
}
catch (TwitterException te) {
te.printStackTrace();
Toast.makeText(BookShelf_twitter.this, "伝送が失敗しました", Toast.LENGTH_LONG).show();
}
}
}
twitter.updateStatus(Result+" MyComent : "+edit.getText().toString());
Toast.makeText(BookShelf_twitter.this, "twitterに伝送しました", Toast.LENGTH_LONG).show();
}
catch (TwitterException te) {
te.printStackTrace();
Toast.makeText(BookShelf_twitter.this, "伝送が失敗しました", Toast.LENGTH_LONG).show();
}
}
}
2011.10.05 14:48:19
그리고 Configuration config = new ConfigurationBuilder().build(); 위에
String accessToken = acToken.getToken();
String accessTokenSecret = acToken.getTokenSecret();
추가해보세요...
String accessToken = acToken.getToken();
String accessTokenSecret = acToken.getTokenSecret();
Configuration config = new ConfigurationBuilder().build();
OAuthAuthorization oauth = new OAuthAuthorization(config, C.TWITTER_CONSUMER_KEY, C.TWITTER_CONSUMER_SECRET, new AccessToken(accessToken, accessTokenSecret));
요런식으로... 'ㅂ'




음... 일단 File picture = new File(path + image); 를요
File picture = new File(path +"/"+image); 해보세요...