Android 社交网站';的登录正在通过自己的应用程序进行
我有一个活动,其中会打开一个对话框,显示社交网络图标列表。点击图标,它将在同一个应用程序而不是浏览器中打开站点,但当我们在输入用户名和密码后点击登录时出现问题,它显示异常,如下所示:Android 社交网站';的登录正在通过自己的应用程序进行,android,Android,我有一个活动,其中会打开一个对话框,显示社交网络图标列表。点击图标,它将在同一个应用程序而不是浏览器中打开站点,但当我们在输入用户名和密码后点击登录时出现问题,它显示异常,如下所示: 12-27 14:16:14.062: E/AndroidRuntime(4052): FATAL EXCEPTION: main 12-27 14:16:14.062: E/AndroidRuntime(4052): android.view.WindowManager$BadTokenException: Un
12-27 14:16:14.062: E/AndroidRuntime(4052): FATAL EXCEPTION: main
12-27 14:16:14.062: E/AndroidRuntime(4052): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@41c59680 is not valid; is your activity running?
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.view.ViewRootImpl.setView(ViewRootImpl.java:513)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.view.Window$LocalWindowManager.addView(Window.java:537)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.app.Dialog.show(Dialog.java:278)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.app.AlertDialog$Builder.show(AlertDialog.java:932)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.webkit.WebView.onSavePassword(WebView.java:1402)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:442)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.os.Handler.dispatchMessage(Handler.java:99)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.os.Looper.loop(Looper.java:137)
12-27 14:16:14.062: E/AndroidRuntime(4052): at android.app.ActivityThread.main(ActivityThread.java:4424)
12-27 14:16:14.062: E/AndroidRuntime(4052): at java.lang.reflect.Method.invokeNative(Native Method)
12-27 14:16:14.062: E/AndroidRuntime(4052): at java.lang.reflect.Method.invoke(Method.java:511)
12-27 14:16:14.062: E/AndroidRuntime(4052): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-27 14:16:14.062: E/AndroidRuntime(4052): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-27 14:16:14.062: E/AndroidRuntime(4052): at dalvik.system.NativeStart.main(Native Method)
12-27 14:16:14.605: I/dalvikvm(4052): threadid=3: reacting to signal 3
12-27 14:16:14.613: I/dalvikvm(4052): Wrote stack traces to '/data/anr/traces.txt'
12-27 14:16:16.273: I/Process(4052): Sending signal. PID: 4052 SIG: 9
这是我的代码:
public class ShareActivity extends Activity implements OnItemClickListener {
//public static ShareActivity context;
WebView wv;
boolean land_scape=false;
ProgressDialog pdlg;
String links[]= new String[]{"Facebook","Twitter","Google Plus","Pintrest"};
ListView lv1;
Dialog dialog ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
land_scape=true;
}
else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
land_scape=false;
}
setContentView(R.layout.share_layout);
//context=this;
wv=(WebView)findViewById(R.id.webView1);
wv.getSettings().setJavaScriptEnabled(true);
dialog = new Dialog(ShareActivity.this.getParent());
dialog.setTitle("Please select");
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(R.layout.share_list);
lv1=(ListView)dialog.findViewById(R.id.listShare);
lv1.setAdapter(new CustomShareAdapter(this,links));
lv1.setOnItemClickListener(this);
dialog.show();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
switch(arg2)
{
case 0:
wv.loadUrl("http://www.facebook.com");
break;
case 1:
wv.loadUrl("https://mobile.twitter.com/login");
break;
case 2:
wv.loadUrl("http://www.plus.google.com");
break;
case 3:
wv.loadUrl("http://www.pinterest.com");
break;
}
wv.setWebViewClient(new WebViewClient());
dialog.dismiss();
}
@Override
public void onResume()
{
//Determine screen size
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
//Toast.makeText(this, "Large screen set to landscape",Toast.LENGTH_LONG).show();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
land_scape=true;
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
//Toast.makeText(this, "Normal sized screen set to portrait" , Toast.LENGTH_LONG).show();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
land_scape=false;
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
// Toast.makeText(this, "Small sized screen set to portrait " , Toast.LENGTH_LONG).show();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
land_scape=false;
}
else {
//Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
land_scape=false;
}
super.onResume();
}
@Override
public void onBackPressed() {
Intent backIntent = new Intent(this, MainActivity.class);
startActivity(backIntent);
super.onBackPressed();
}
}
public类ShareActivity扩展活动实现了mclicklinklistener{
//公共静态共享活动上下文;
网络视图;
布尔景观=假;
ProgressDialog pdlg;
字符串链接[]=新字符串[]{“Facebook”、“Twitter”、“Google Plus”、“Pintrest”};
ListView lv1;
对话;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
int currentOrientation=getResources().getConfiguration().orientation;
if(currentOrientation==Configuration.ORIENTATION\u横向){
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u SENSOR\u横向);
景观=真实;
}
否则{
setRequestedOrientation(ActivityInfo.屏幕\方向\传感器\纵向);
景观=假;
}
setContentView(R.layout.share_布局);
//上下文=这个;
wv=(WebView)findViewById(R.id.webView1);
wv.getSettings().setJavaScriptEnabled(true);
dialog=新建对话框(ShareActivity.this.getParent());
对话框。设置标题(“请选择”);
对话框。setCanceledOnTouchOutside(false);
setContentView(R.layout.share_列表);
lv1=(ListView)dialog.findViewById(R.id.listShare);
lv1.setAdapter(新的CustomShareAdapter(this,links));
lv1.SetonicClickListener(本);
dialog.show();
}
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
开关(arg2)
{
案例0:
wv.loadUrl(“http://www.facebook.com");
打破
案例1:
wv.loadUrl(“https://mobile.twitter.com/login");
打破
案例2:
wv.loadUrl(“http://www.plus.google.com");
打破
案例3:
wv.loadUrl(“http://www.pinterest.com");
打破
}
setWebViewClient(新的WebViewClient());
dialog.dismise();
}
@凌驾
恢复时公开作废()
{
//确定屏幕大小
if((getResources().getConfiguration().screenLayout&Configuration.screenLayout\u SIZE\u MASK)==Configuration.screenLayout\u SIZE\u LARGE){
//Toast.makeText(这是“大屏幕设置为横向”,Toast.LENGTH_LONG.show();
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u SENSOR\u横向);
景观=真实;
}
如果((getResources().getConfiguration().screenLayout&Configuration.screenLayout\u SIZE\u MASK)==Configuration.screenLayout\u SIZE\u NORMAL){
//Toast.makeText(这是“正常大小的屏幕设置为纵向”,Toast.LENGTH_LONG.show();
setRequestedOrientation(ActivityInfo.屏幕\方向\传感器\纵向);
景观=假;
}
else if((getResources().getConfiguration().screenLayout&Configuration.screenLayout\u SIZE\u MASK)==Configuration.screenLayout\u SIZE\u SMALL){
//Toast.makeText(这是“设置为纵向的小屏幕”,Toast.LENGTH_LONG.show();
setRequestedOrientation(ActivityInfo.屏幕\方向\传感器\纵向);
景观=假;
}
否则{
//Toast.makeText(这个“屏幕大小既不大也不正常”或“小”),Toast.LENGTH_LONG.show();
景观=假;
}
super.onResume();
}
@凌驾
public void onBackPressed(){
Intent backIntent=新的Intent(这个,MainActivity.class);
起始触觉(背向意图);
super.onBackPressed();
}
}
第二个问题:它还显示我没有设置的空屏幕。
关于这一点,我已经研究了很多。请帮助我。使用以下代码创建对话框:
dialog = new Dialog(this);
我认为getParent()会返回一些对您不可用的内容,因为您只需要当前的活动。此错误通常发生在您尝试在活动结束后使用对话框时finished@ShreyaShah请给我建议一些解决方案。签入onDestroy():如果(dialog.isShowing())那么dialog.discouse();你建议我回答哪个问题?如果是第二个问题,按下“后退”按钮,屏幕显示空白,再次按下“后退”按钮,我将进入主要活动。但我希望它在第一次按下时发生。这个答案是针对应用程序崩溃的。我认为它也可以解决第二个问题,如果后退按钮的问题是由于对话框。让我知道在尝试它之后会发生什么,因为这一切都发生在选项卡活动中。它这样做了,它就会起作用。那么,还有其他解决方案吗?@Rohit好的,那么保留您原来的代码行,但在
onResume()的末尾创建并显示对话框怎么样?
?我不认为这样会有帮助。你确定吗?因为若我们在onResume方法中创建并显示它,当我单击Share选项卡时,它将不起作用。你不这么认为吗?