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.
}