Java 如何在android中从mainactivity中的url获取数据

Java 如何在android中从mainactivity中的url获取数据,java,android,Java,Android,我使用的代码对我来说工作得很好,但问题是我无法在主活动中获取数据 public class AsyncTaskParseJson extends AsyncTask<String, String, String> { final String TAG = "AsyncTaskParseJson.java"; // set your json string url here String yourJsonStringUrl = "http://demo.co

我使用的代码对我来说工作得很好,但问题是我无法在主活动中获取数据

public class AsyncTaskParseJson extends AsyncTask<String, String, String> {

    final String TAG = "AsyncTaskParseJson.java";

    // set your json string url here
    String yourJsonStringUrl = "http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php";

    // contacts JSONArray
    JSONArray dataJsonArr = null;

    @Override
    protected void onPreExecute() {}

    @Override
    protected String doInBackground(String... arg0) {

        try {

            // instantiate our json parser
            JsonParser jParser = new JsonParser();

            // get json string from url
            JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);

            // get the array of users
            dataJsonArr = json.getJSONArray("Users");

            // loop through all users
            for (int i = 0; i < dataJsonArr.length(); i++) {

                JSONObject c = dataJsonArr.getJSONObject(i);

                // Storing each json item in variable
                String firstname = c.getString("firstname");
                String lastname = c.getString("lastname");
                String username = c.getString("username");

                // show the values in our logcat
                Log.e(TAG, "firstname: " + firstname 
                        + ", lastname: " + lastname
                        + ", username: " + username);

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String strFromDoInBg) {}
}
我想在主活动中获取firstname、lastname、username等数据作为变量

有可能吗

这是我想要获取变量时的另一个类IncomingCall.java

           public class IncomingCall extends BroadcastReceiver {
private String firstname;
private String lastname;
private String username;




  public void onReceive (Context context, Intent intent) {
  // TODO Auto-generated method stub



    Toast.makeText(context, " Calling "+username, Toast.LENGTH_LONG).show();    

    try {

        if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
                 TelephonyManager.EXTRA_STATE_IDLE)
                 || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
                         TelephonyManager.EXTRA_STATE_OFFHOOK)) {
            notifyuser=true;

        }

    } catch (Exception e) {
        // TODO: handle exception

        //Toast.makeText(context, "Error detected 1 "+e, Toast.LENGTH_LONG).show(); 

    }
  }


  public class AsyncTaskParseJson extends AsyncTask<String, String, String>      {

    final String TAG = "AsyncTaskParseJson.java";

    // set your json string url here
    String yourJsonStringUrl =     "http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php";

    // contacts JSONArray
    JSONArray dataJsonArr = null;

    @Override
    protected void onPreExecute() {}

    @Override

    protected String doInBackground(String... arg0) {

        try {

            // instantiate our json parser
            JsonParser jParser = new JsonParser();

            // get json string from url
            JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);

            // get the array of users
            dataJsonArr = json.getJSONArray("Users");

            // loop through all users
           // for (int i = 0; i < dataJsonArr.length(); i++) {

                JSONObject c = dataJsonArr.getJSONObject(0);

                // Storing each json item in variable
                firstname = c.getString("firstname");
                lastname = c.getString("lastname");
                username = c.getString("username");

                // show the values in our logcat
                Log.e(TAG, "firstname: " + firstname 
                        + ", lastname: " + lastname
                        + ", username: " + username);

           // }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //Here you use your variables
            }
        });

        return null;
    }

    protected void onPostExecute(String strFromDoInBg) {


         Log.e("TAG1", "firstname: " + firstname 
                 + ", lastname: " + lastname
                 + ", username: " + username);


    }
}
公共类IncomingCall扩展了BroadcastReceiver{
私有字符串名;
私有字符串lastname;
私有字符串用户名;
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
Toast.makeText(上下文,“Calling”+用户名,Toast.LENGTH_LONG.show();
试一试{
if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_IDLE)
||getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)){
notifyuser=true;
}
}捕获(例外e){
//TODO:处理异常
//Toast.makeText(上下文,“检测到错误1”+e,Toast.LENGTH_LONG.show();
}
}
公共类AsyncTaskParseJson扩展AsyncTask{
final String TAG=“AsyncTaskParseJson.java”;
//在此处设置json字符串url
字符串yourJsonStringUrl=”http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php";
//联系JSONArray
JSONArray dataJsonArr=null;
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
试一试{
//实例化我们的json解析器
JsonParser jParser=新的JsonParser();
//从url获取json字符串
JSONObject json=jParser.getJSONFromUrl(yourJsonStringUrl);
//获取用户数组
dataJsonArr=json.getJSONArray(“用户”);
//遍历所有用户
//for(int i=0;i

这是我的代码

将代码放入主活动类,然后使用类变量存储所需内容,例如:

public class MainActivity extends Activity {

    private String[] firstname;
    private String[] lastname;
    private String[] username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new AsyncTaskParseJson().execute();

    }

    public class AsyncTaskParseJson extends AsyncTask<String, String, String> {

        final String TAG = "AsyncTaskParseJson.java";

        // set your json string url here
        String yourJsonStringUrl =     "http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php";

        // contacts JSONArray
        JSONArray dataJsonArr = null;

        @Override
        protected void onPreExecute() {}

        @Override
        protected String doInBackground(String... arg0) {

            try {

                // instantiate our json parser
                JsonParser jParser = new JsonParser();

                // get json string from url
                JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);

                // get the array of users
                dataJsonArr = json.getJSONArray("Users");


                firstname = new String[dataJsonArr.length()];
                lastname = new String[dataJsonArr.length()];
                username = new String[dataJsonArr.length()];

                // loop through all users
                for (int i = 0; i < dataJsonArr.length(); i++) {

                    JSONObject c = dataJsonArr.getJSONObject(i);

                    // Storing each json item in variable
                    firstname[i] = c.getString("firstname");
                    lastname[i] = c.getString("lastname");
                    username[i] = c.getString("username");

                    // show the values in our logcat
                    Log.e(TAG, "firstname: " + firstname 
                            + ", lastname: " + lastname
                            + ", username: " + username);

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //Here you use your variables
                }
            });

            return null;
        }

        @Override
        protected void onPostExecute(String strFromDoInBg) {}
    }
}
公共类MainActivity扩展活动{
私有字符串[]firstname;
私有字符串[]lastname;
私有字符串[]用户名;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新建AsyncTaskParseJson().execute();
}
公共类AsyncTaskParseJson扩展AsyncTask{
final String TAG=“AsyncTaskParseJson.java”;
//在此处设置json字符串url
字符串yourJsonStringUrl=”http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php";
//联系JSONArray
JSONArray dataJsonArr=null;
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
试一试{
//实例化我们的json解析器
JsonParser jParser=新的JsonParser();
//从url获取json字符串
JSONObject json=jParser.getJSONFromUrl(yourJsonStringUrl);
//获取用户数组
dataJsonArr=json.getJSONArray(“用户”);
firstname=新字符串[dataJsonArr.length()];
lastname=新字符串[dataJsonArr.length()];
用户名=新字符串[dataJsonArr.length()];
//遍历所有用户
for(int i=0;i
类似这样的内容(没有错误检查,请尝试)

编辑:确保已在android清单中声明internet权限:

<uses-permission android:name="android.permission.INTERNET" />

onPostExecute方法在主线程上运行,您需要在doInBackground完成并将控件返回主线程后使用数据

最好在方法中使用这些数据

  protected void onPostExecute(String strFromDoInBg) {
   // use the firstname , lastname or username after this method call.
   }
我想在这里看到wid.setText(json.getString
  protected void onPostExecute(String strFromDoInBg) {
   // use the firstname , lastname or username after this method call.
   }