Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 尝试异步连接到twitter时活动关闭_Java_Android_Twitter4j - Fatal编程技术网

Java 尝试异步连接到twitter时活动关闭

Java 尝试异步连接到twitter时活动关闭,java,android,twitter4j,Java,Android,Twitter4j,我一直在尝试为Android编写一个twitter客户端(使用twitter4j)。到目前为止,我们的想法是拥有一个简单的GUI,如果SD卡中没有包含OAuth令牌的文件,请使用AsyncTask连接到Twitter API,获取授权的URL并打开默认浏览器。但是,浏览器从不运行。根据我尝试修复此问题时所做的不同修改,要么活动正常启动,但浏览器从未启动,要么活动崩溃。我已经到了有点沮丧和困惑的地步。有人能指出我的代码有什么问题吗 public class StatusActivity exten

我一直在尝试为Android编写一个twitter客户端(使用twitter4j)。到目前为止,我们的想法是拥有一个简单的GUI,如果SD卡中没有包含OAuth令牌的文件,请使用AsyncTask连接到Twitter API,获取授权的URL并打开默认浏览器。但是,浏览器从不运行。根据我尝试修复此问题时所做的不同修改,要么活动正常启动,但浏览器从未启动,要么活动崩溃。我已经到了有点沮丧和困惑的地步。有人能指出我的代码有什么问题吗

public class StatusActivity extends Activity {

private static final String TAG = "StatusActivity";
EditText editText;
Button updateButton;
File oauthfile = null;
public Context context = getApplicationContext();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_status);

    Log.d(TAG, "started");
    // Find views
    editText = (EditText) findViewById(R.id.editText); //
    updateButton = (Button) findViewById(R.id.buttonUpdate);

    oauthfile = new File("sdcard/auth_file.txt");

    //Check if the file with the keys exist
    if (oauthfile.exists()==false){
        Log.d(TAG, "file not created");
        Context context = getApplicationContext();
        Toast toast = Toast.makeText(context, "file not created.",    Toast.LENGTH_SHORT);
        toast.show();
        new Authorization(context).execute();

    }


}

public void openBrowser (View v){
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    startActivity(browserIntent);
    Log.d(TAG, "onclick");
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.status, menu);
    return true;
    }
}

class Authorization extends AsyncTask <String, Integer, String>{
String url = null;
private Context context;

 Authorization(Context context) {
        this.context = context.getApplicationContext();
    }



public void onPreExecute() {
       super.onPreExecute();
       Toast.makeText(context, "Invoke onPreExecute()", Toast.LENGTH_SHORT).show();         
      }


@Override
public String doInBackground(String... params) {
    ConfigurationBuilder configBuilder = new ConfigurationBuilder();
    configBuilder.setDebugEnabled(true)
//I have eliminated the keys from the question :)
    .setOAuthConsumerKey("XXXXXXXXXXXXXX")
    .setOAuthConsumerSecret("XXXXXXXXXXXXXXX");
    Twitter OAuthTwitter = new TwitterFactory(configBuilder.build()).getInstance();
    RequestToken requestToken = null;
    AccessToken accessToken = null;     
    do{
        try {
            requestToken = OAuthTwitter.getOAuthRequestToken();
            url = requestToken.getAuthorizationURL();
        } 
        catch (TwitterException ex) {
            ex.printStackTrace();
        }       
    }
    while (accessToken==null);
    return url;
}

protected void onPostExecute(String result) {
    super.onPostExecute(result);

    Toast.makeText(context, "Opening browser.", Toast.LENGTH_SHORT).show();

    Intent browserIntent = new Intent(Intent.ACTION_ALL_APPS, Uri.parse(url));
    context.startActivity(browserIntent);
}
}
公共类状态活动扩展活动{
私有静态最终字符串标记=“StatusActivity”;
编辑文本编辑文本;
按钮更新按钮;
文件oauthfile=null;
公共上下文=getApplicationContext();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_状态);
Log.d(标记“已启动”);
//查找视图
editText=(editText)findViewById(R.id.editText)//
updateButton=(按钮)findViewById(R.id.buttonUpdate);
oauthfile=新文件(“sdcard/auth_File.txt”);
//检查带有密钥的文件是否存在
if(oauthfile.exists()==false){
Log.d(标记“未创建文件”);
Context=getApplicationContext();
Toast Toast=Toast.makeText(上下文,“未创建文件”,Toast.LENGTH\u SHORT);
toast.show();
新授权(上下文).execute();
}
}
公共void openBrowser(视图v){
Intent browserIntent=新意图(Intent.ACTION\u视图,Uri.parse(“http://www.google.com"));
startActivity(浏览器内容);
Log.d(标记为“onclick”);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.status,menu);
返回true;
}
}
类授权扩展了异步任务{
字符串url=null;
私人语境;
授权(上下文){
this.context=context.getApplicationContext();
}
公共无效onPreExecute(){
super.onPreExecute();
Toast.makeText(上下文,“Invoke onPreExecute()”,Toast.LENGTH_SHORT.show();
}
@凌驾
公共字符串doInBackground(字符串…参数){
ConfigurationBuilder configBuilder=新的ConfigurationBuilder();
configBuilder.setDebugEnabled(真)
//我已从问题中删除了关键:)
.setOAuthConsumerKey(“xxxxxxxxxxxx”)
.SetOAuthConsumerCret(“XXXXXXXXXXXXX”);
TwitterOAuthTwitter=newTwitterFactory(configBuilder.build()).getInstance();
RequestToken RequestToken=null;
AccessToken AccessToken=null;
做{
试一试{
requestToken=OAuthTwitter.getOAuthRequestToken();
url=requestToken.getAuthorizationURL();
} 
捕获(TwitterException ex){
例如printStackTrace();
}       
}
while(accessToken==null);
返回url;
}
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
Toast.makeText(上下文,“打开浏览器”,Toast.LENGTH_SHORT).show();
Intent-browserint=newintent(Intent.ACTION\u ALL\u APPS,Uri.parse(url));
背景。开始触觉(浏览内容);
}
}
我知道,至少会检查令牌文件是否存在,因为会出现toast“file not created”(文件未创建),并且如果我按下按钮,活动能够运行浏览器。该应用程序具有写入SD卡和使用互联网的权限。提前谢谢

Logcat跟踪:

03-28 19:02:32.816: E/AndroidRuntime(278): FATAL EXCEPTION: main
03-28 19:02:32.816: E/AndroidRuntime(278): java.lang.RuntimeException: Unable to     instantiate activity     ComponentInfo{com.versec.pardinus/com.versec.pardinus.StatusActivity}: java.lang.NullPointerException
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.os.Looper.loop(Looper.java:123)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread.main(ActivityThread.java:4627)
03-28 19:02:32.816: E/AndroidRuntime(278):  at java.lang.reflect.Method.invokeNative(Native Method)
03-28 19:02:32.816: E/AndroidRuntime(278):  at java.lang.reflect.Method.invoke(Method.java:521)
03-28 19:02:32.816: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-28 19:02:32.816: E/AndroidRuntime(278):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-28 19:02:32.816: E/AndroidRuntime(278):  at dalvik.system.NativeStart.main(Native Method)
03-28 19:02:32.816: E/AndroidRuntime(278): Caused by: java.lang.NullPointerException
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100)
03-28 19:02:32.816: E/AndroidRuntime(278):  at com.versec.pardinus.StatusActivity.<init>(StatusActivity.java:30)
03-28 19:02:32.816: E/AndroidRuntime(278):  at java.lang.Class.newInstanceImpl(Native Method)
03-28 19:02:32.816: E/AndroidRuntime(278):  at java.lang.Class.newInstance(Class.java:1429)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-28 19:02:32.816: E/AndroidRuntime(278):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-28 19:02:32.816: E/AndroidRuntime(278):  ... 11 more
03-2819:02:32.816:E/AndroidRuntime(278):致命异常:main
03-28 19:02:32.816:E/AndroidRuntime(278):java.lang.RuntimeException:无法实例化活动组件信息{com.versec.pardinus/com.versec.pardinus.StatusActivity}:java.lang.NullPointerException
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-28 19:02:32.816:E/AndroidRuntime(278):在android.os.Handler.dispatchMessage(Handler.java:99)上
03-2819:02:32.816:E/AndroidRuntime(278):在android.os.Looper.loop(Looper.java:123)上
03-28 19:02:32.816:E/AndroidRuntime(278):位于android.app.ActivityThread.main(ActivityThread.java:4627)
03-28 19:02:32.816:E/AndroidRuntime(278):位于java.lang.reflect.Method.Invokenactive(本机方法)
03-28 19:02:32.816:E/AndroidRuntime(278):位于java.lang.reflect.Method.invoke(Method.java:521)
03-28 19:02:32.816:E/AndroidRuntime(278):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-28 19:02:32.816:E/AndroidRuntime(278):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-28 19:02:32.816:E/AndroidRuntime(278):在dalvik.system.NativeStart.main(本机方法)
03-28 19:02:32.816:E/AndroidRuntime(278):由以下原因引起:java.lang.NullPointerException
03-28 19:02:32.816:E/AndroidRuntime(278):位于android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100)
03-28 19:02:32.816:E/AndroidRuntime(278):在com.versec.pardinus.StatusActivity.(StatusActivity.java:30)
03-28 19:02:32.816:E/AndroidRuntime(278):位于java.lang.Class.newInstanceImpl(本机方法)
03-28 19:02:32.816:E/AndroidRuntime(278):位于java.lang.Class.newInstance(Class.java:1429)
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)上
03-28 19:02:32.816:E/AndroidRuntime(278):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
03-28 19
public Context context = getApplicationContext();
oauthfile = new File("sdcard/auth_file.txt");
    File dir = Environment.getExternalStorageDirectory();
    File oauthfile = new File(dir, "auth_file.txt");