Android之项目开发中在app内Intent意图跳转自己指定的Html5页面
2016-08-17 15:41
1866 查看
Android之项目开发中在app内Intent意图跳转自己指定的Html5页面
常规的跳转我们都知道是用Intent,但是Intent一般用于Activity间的跳转,这里我们只有一个URL,那么怎样实现跳转呢?
下面开始
Class.forName(“Test”)适用多个跳转页面String传值
Intent intent = new Intent(); intent.putExtra("key", "value"); try { intent.setClass(context.getApplicationContext() ,Class.forName("Test")); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK ); context.getApplicationContext().startActivity(intent);
Test.class单一的
Intent intent = new Intent(); intent.putExtra("key", "value"); try { intent.setClass(context.getApplicationContext(),Test.class); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK ); context.getApplicationContext().startActivity(intent);
直接跳到手机浏览器,不在app里面了
Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("https://www.baidu.com/"); intent.setData(content_url); startActivity(intent);
跳转手机浏览器算什么,我直接打开其他应用,例如美团地址打开高德地图导航,相信大家不陌生吧
ComponentName componentName=new ComponentName("com.lany.screenshot","com.lany.screenshot.MainActivity"); Intent intent = new Intent(); intent.setComponent(componentName); intent.setAction(Intent.ACTION_VIEW); intent.putExtra("Version", getSimpleVersionInfo()); intent.putExtra("buildNumber", buildNumber); startActivity(intent);
除了跳转,还可以附带数据,注意在跳转到其他app时,跳转到的app必须在跳转到的界面的manifest文件中定义exported=true,否则无法正常跳转。
这个也是H5但是却跳出了自己的app,工程中不太需要
Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("https://www.baidu.com/"); intent.setData(content_url); startActivity(intent);
给大家来个秒杀其他博客的东西,项目实在开发必须
其实兼容Html5网页的最好的方式是如下。。。
Intent intent = new Intent(); intent.putExtra("H5Url", "https://www.baidu.com/"); intent.setClass(context.getApplicationContext(),H5WebViewActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK ); context.getApplicationContext().startActivity(intent);
H5WebViewActivity,这个自己随便找个,主要用处就是webView的使用,不会的百度吧
这个是样式,不能直接copy,这种写法就用到了intent的传值,其他啥也没有但是,你可以传任何字段public class H5WebViewActivity extends JSONWadeActivity { private WebView webview;//调用内置浏览器控件 private ProgressDialog myDialog;//进度对话框 /* * 定时规则: * 开始加载页面时,启动定时器,页面加载完成时关闭定时器,超过timeout时间还没有加载完成的页面,定时任务停止页面加载并关闭定时器 * 如果网页内部通过iframe进行提交查询,本定时规则无效 * 可能会异常退出,取消定时器 */ private String mainUrl;//首页 private String currentUrl;//当前url @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_h5); webview=(WebView)findViewById(R.id.lsWebViewH5);//获取控件 webview.clearHistory();//清空访问历史 webview.setBackgroundColor(Color.TRANSPARENT);//设置webview背景色透明,使背景图片可见 WebSettings setting=webview.getSettings(); setting.setJavaScriptEnabled(true);//可以使用javascript,有风险 setting.setSupportZoom(true);//支持缩放 setting.setBuiltInZoomControls(true);//出现缩放工具 //webview.addJavascriptInterface(new JsInterface(), "JsInterface");//js脚本可以调用的类 //在当前webview中打开连接,不要跳到系统浏览器中 webview.setWebViewClient(new WebViewClient(){ //请求页面失败 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { //请求失败的处理404 view.stopLoading(); view.clearView(); Message msg=handler.obtainMessage(); msg.what=1; handler.sendMessage(msg); } //开始请求页面 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //Log.d("GERL", "onPageStarted url="+url); showMyDialog();//显示进度窗口 currentUrl=url;//记录当前页面地址 //startTimer();//开启计时器 } //请求页面加载完成 @Override public void onPageFinished(WebView view, String url) { //Log.d("GERL", "onPageFinished"); closeMyDialog();//关闭进度提示 super.onPageFinished(view, url); //stopTimer();//不管是否加载完了,到时将定时器停止 } }); //设定一个WebChromeClient否则js alert不能弹出 webview.setWebChromeClient(new WebChromeClient() { // 重写js alert方法,调用android对话框显示,否则会显示网页地址,如“10.0.2.2处的页面表明” @Override public boolean onJsAlert(WebView view, String url, String message,JsResult result) { AlertDialog ab = new AlertDialog.Builder( H5WebViewActivity.this).setTitle("提示") .setMessage(message).setPositiveButton("确定", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog,int which) { // 点击确定关闭 dialog.dismiss(); } }).create(); ab.show(); result.cancel();//不写这句,弹窗后不能点击页面,写了这句,不能阻止js继续向下执行 return true; // return super.onJsAlert(view, url, message, result); } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { // TODO Auto-generated method stub return super.onJsConfirm(view, url, message, result); } }); //开始请求页面 mainUrl = getIntent().getStringExtra("H5Url"); webview.loadUrl(mainUrl); } /** * 重写按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处理则整个WebView返回退出 */ public boolean onKeyDown(int keyCode,KeyEvent event){ //Log.d("GERL", "onKeyDown=="+keyCode); if(keyCode==KeyEvent.KEYCODE_BACK){ //Log.d("GERL", "onKeyDown goBack"); //返回键,当前页面不是首页的返回首页,是首页的就退出 if(currentUrl!=null && !currentUrl.equals(mainUrl)){ webview.loadUrl(mainUrl); return true; } /* if(webview.canGoBack()){ webview.goBack(); return true; }*/ } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { // TODO Auto-generated method stub closeMyDialog();//注销的时候把dialog也注销吧 super.onDestroy(); } @SuppressLint("HandlerLeak") private Handler handler=new Handler(){//消息处理器 @Override public void handleMessage(Message msg) { //Log.d("GERL", "handleMessage what=="+msg.what); closeMyDialog(); switch (msg.what){ case 1://加载失败 Toast.makeText(H5WebViewActivity.this, "请求数据失败!",Toast.LENGTH_SHORT).show(); //webview.loadUrl("file:///android_asset/ls404.html"); finish(); break; case 2://加载超时 Toast.makeText(H5WebViewActivity.this, "请求超时失败!",Toast.LENGTH_SHORT).show(); webview.stopLoading(); webview.loadUrl("file:///android_asset/ls404.html"); break; } } }; /** * 显示进度窗口 */ public void showMyDialog() { myDialog = new ProgressDialog(this); myDialog.setMessage("正在请求数据,请稍等..."); myDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); myDialog.show(); } /** * 关闭进度窗口 */ public void closeMyDialog(){ if(myDialog!=null && myDialog.isShowing()){ myDialog.dismiss(); } } /** * k值 * @param managerId * @return */ private int getK(String managerId){ int a=0; if(managerId==null || managerId.length()==0){ a=88; }else{ for(int i=0;i<managerId.length();i++){ a+=managerId.charAt(i); } } int b=a/2; Calendar t=Calendar.getInstance(); int c=t.get(Calendar.DATE); int d=t.get(Calendar.MONTH); return ((a+c+d+922)*b%2014); } }
好了完成了
相关文章推荐
- Android开发:显式/隐式Intent意图跳转Activity总结
- (转)Android开发:显式/隐式Intent意图跳转Activity总结
- MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换
- 移动开发 - Android - 实现两个页面(Activity)的简单跳转(Intent)
- Android开发10——Activity的跳转与传值_显示意图(intent)的应用
- Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
- ( 转转)Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
- Android开发 第13课 使用Intent实现页面跳转
- Android App跳转App以及App跳转指定App页面的实现
- Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
- 安卓仿手机网易新闻app项目开发系列之(六)点击页面跳转和网络路径拼接
- Android实现深度链接(APP外带动态参数唤醒APP,并跳转指定页面,APP不论在不在运行都可以)
- android开发_Intent_requestCode_resultCode页面之间的跳转
- queryIntentActivities快速获取自己App内的所有指定的Activity 并设置跳转
- Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
- android开发基础:Intent与Bundle的使用,实现页面跳转及信息传递
- Android开发:显式/隐式Intent意图跳转Activity总结
- 一、东软实践项目2-基于android平台的应用开发:实现页面之间的跳转
- 详解Android App卸载后跳转到指定的反馈页面的方法
- android 通过Intent action 跳转到系统页面,调用系统功能以及action动作