我写了一个android应用,应用的目的是访问一个网站,同时获取手机的串号,在模拟器上运行都是合适的,但是当我部署都android手机上的时候,应用就会报错,我就测试到底是访问网站是出错,还是获取串口时出错,最后注掉访问网站的代码,发现合适,最后确定是获取网站的时候出错了,代码如下:
package com.example.test;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.telephony.TelephonyManager;public class MainActivity extends Activity {
private WebView webView;
private String url = "http://cs.spcard.net";
private ProgressDialog progressDialog; //定义进度条
private static final int CLOSE_DLG = 1;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == CLOSE_DLG){
progressDialog.dismiss();
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
load(url, webView);
}
//获取串口号
public void find(View view){
Context context = getWindow().getContext();
TelephonyManager telephonemanage = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Toast.makeText(this, "串号:"+telephonemanage.getDeviceId(),6000).show();
}catch(Exception e){
Log.i("error", e.getMessage());
}
}
public void init(){
if(progressDialog == null){ //判断有没有进度条
progressDialog = new ProgressDialog(this); //若没有,新建一个进度条
}
progressDialog.setTitle("正在加载,请稍等..."); //进度条的标题,即显示的文字
progressDialog.show(); //显示进度条
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); //设置能加载网页里面的javascript
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
load(url, webView);
return super.shouldOverrideUrlLoading(view, url);
}
});
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress == 100){ //当加载到100%的时候,关闭进度条
handler.sendEmptyMessage(CLOSE_DLG);
}
super.onProgressChanged(view, newProgress);
}
});
}
public void load(final String url, final WebView view){
//判断url是否为空,若为空,则返回
if(url == null || "".equals(url)){
return;
}
new Thread(){
@Override
public void run() {
view.loadUrl(url);
}
}.start();
}
}
哪位大侠解决下谢谢了!
package com.example.test;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.telephony.TelephonyManager;public class MainActivity extends Activity {
private WebView webView;
private String url = "http://cs.spcard.net";
private ProgressDialog progressDialog; //定义进度条
private static final int CLOSE_DLG = 1;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == CLOSE_DLG){
progressDialog.dismiss();
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
load(url, webView);
}
//获取串口号
public void find(View view){
Context context = getWindow().getContext();
TelephonyManager telephonemanage = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Toast.makeText(this, "串号:"+telephonemanage.getDeviceId(),6000).show();
}catch(Exception e){
Log.i("error", e.getMessage());
}
}
public void init(){
if(progressDialog == null){ //判断有没有进度条
progressDialog = new ProgressDialog(this); //若没有,新建一个进度条
}
progressDialog.setTitle("正在加载,请稍等..."); //进度条的标题,即显示的文字
progressDialog.show(); //显示进度条
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); //设置能加载网页里面的javascript
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
load(url, webView);
return super.shouldOverrideUrlLoading(view, url);
}
});
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress == 100){ //当加载到100%的时候,关闭进度条
handler.sendEmptyMessage(CLOSE_DLG);
}
super.onProgressChanged(view, newProgress);
}
});
}
public void load(final String url, final WebView view){
//判断url是否为空,若为空,则返回
if(url == null || "".equals(url)){
return;
}
new Thread(){
@Override
public void run() {
view.loadUrl(url);
}
}.start();
}
}
哪位大侠解决下谢谢了!
解决方案 »
- 关于html5在andriod上开发的问题(我是小白)
- 谁有可以正常下载的SDK包啊,还有ADT啊 。。
- webview中加载html的问题
- 固定在屏幕底部,不随ScrollView 滚动而改变位置的按钮?怎实现?
- 关于调用自带播放器播放视频的问题
- android初学
- Android 执行linux shell 语句问题
- 新手求问,大家不要在意我的代码- -
- Android ListView在屏幕内的item复用后都使用的同一个view
- fragment相互切换
- 最新的新浪微博客户端ANDROID版 SDK到底怎么用啊?
- 华为3G模块E1750在我的Android系统下识别不了,/dev目录下不见ttyUSB*驱动产生
那肯定会报错。
这个只能在UI主线程去调用
java.lang.SecurityException: ConnectivityService: Neither user 10009 nor current process has android.permission.ACCESS_NETWORK_STATE.
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:375)at android.net.http.RequestQueue.enablePlatformNotifications(RequestQueue.java:257)
at android.webkit.Network.InitalizePlatformNotifications(Network.java:356)
at android.webkit.Network.getInstance(Network.java:95)
at android.webkit.FrameLoader.executeLoad(FrameLoader.java:116)
at android.webkit.BrowserFrame.startLoadingResource(BrowserFrame.java:772)
at android.webkit.BrowserFrame.nativeLoadUrl(Native Method)
at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:252)
at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1592)
at android.webkit.WebViewCore.access$1400(WebViewCore.java:55)
at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:957)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:624)
at java.lang.Thread.run(Thread.java:1096)
---control_open_data_source--num:3-
Successfully to bma150 sensor activate.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
写了这两个权限
这个权限看来很重要了。