广播移动应用服务器端开发(基于JSP技术)-2017BroadcastReceiver实验报告:BroadcastReceiver

jsp服务器  时间:2021-04-29  阅读:()

移动应用服务器端开发基于JSP技术 -2017 BroadcastReceiver实验报告

BroadcastReceiver

广播接收器BoardcastReceiver

PAGE5

实训实验报告

实训(实验)项目:

广播接收器使用

实验目的

学习广播接收器相关属性

学习广播接收器相关属性与使用

实训实验设计器材、步骤、结论 

简介

广播接收器可以自由地对自己感兴趣的广播进行注册这样当有相应的广播发出时广播接收器就能够收到该广播并在内部处理相应的逻辑。

实验目的实现强制下线提醒广播

任务借助本章节中所学习的广播知识来实现强制下线功能。

步骤1.在MainActivity所处的文件夹点击右键新建一个名为ActivityCollector

.java的类文件用于管理所有的活动代码如下publicclassActivityCollector{publicstaticList<Activity>activities=newArrayList<Activity>();publicstaticvoidaddActivity(Activityactivity){activities.add(activity);

}publicstaticvoidremoveActivity(Activityactivity){activities.remove(activity);

}

publicstaticvoidfinishAll(){for(Activityactivity:activities){if(!activity.isFinishing()){activity.finish();

}

}

}

}

步骤2 在MainActivity所处的文件夹点击右键新建一个名为 LoginActivity.java的登录界面活动代码如下所示publicclassLoginActivityextendsBaseActivity{privateE ditTextaccountE dit;privateE ditTextpasswordE dit;privateButtonlogin;

@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);accountEdit=(EditText)findViewById(R.id.account);passwordEdit=(EditText)findViewById(R.id.password);l ogin=(Butto n)findViewByI d(R.id.l ogin);login.setOnClickListener(newView.OnClickListener(){

@OverridepublicvoidonClick(Viewv){

Stringaccount=accountE dit.getText().toString();

Stringpas sword=passwordE dit.getText().toString();

if(account.equals("123456")&&password.equals("123456")){

Intentintent=newIntent(LoginActivity.this,MainActivity.class);startActivity(intent);fi n i s h();

}else{

Toast.makeText(LoginActivity.this,"账号或密码错误",Toast.LE NGTH_SHORT).show();}

}

});

}

}

步骤3 新建一个布局文件activity_login.xml文件代码如下

<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

<LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="60dp">

<TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"

android:layout_gravity="center_vertical"android:inputType="textPassword"/>

</LinearLayout>

<Butto nandroid:id="@+id/login"android:layout_width="match_parent"android:layout_height="60dp"android:text="登录"/>

</LinearLayout>

步骤4修改activity_main布局文件代码添加一个发送强制下线广播的按钮代码如下所示

<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

<Butto nandroid:id="@+id/offline"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发送强制下线广播"/>

</LinearLayout>

步骤5 修改MainActivity中的代码如下所示publicclassMainActivityextendsBaseActivity{

@OverrideprotectedvoidonCreate(BundlesavedInstanceState){

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

ButtonforceOffline=(Button)findViewByI d(R.id.offline);forceOffline.setOnClickListener(newView.OnClickListener(){

@OverridepublicvoidonClick(Viewv){

Intentintent=newIntent("com.example.broadcastpractice.FORCE_OFFLINE");sendBroadcast(intent);

}

});

}

}

步骤6修改BaseActivity中的代码如下所示publicclassBaseActivityextendsAppCompatActivity{privateForceOfflineReceiverreceiver;

@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);

ActivityCollector.addActivity(this);

}

@OverrideprotectedvoidonResume(){super.onResume();

IntentFilterintentFilter=newIntentFilter();intentFilter.addAction("com.example.broadcastpractice.FORCE_OFFLINE");receiver=newForceOfflineReceiver();

registerReceiver(receiver,intentFilter);

}

@OverrideprotectedvoidonPause(){super.onPause();if(receiver!=null){unregisterReceiver(receiver);receiver=null;

}

}

@OverrideprotectedvoidonDestroy(){super.onDestroy();

ActivityCollector.removeActivity(this);

}classForceOfflineReceiverextendsBroadcastReceiver{

@OverridepublicvoidonReceive(finalContextc ontext,Intentintent){

AlertDialog.Builderbuilder=newAlertDialog.Builder(context);

//标题builder.setTitle("强制下线通知");

//正文builder.setMessage("您的账号已在别地登录如不是本人操作请尽快修改密码");//不可取消builder.setCancelable(false);

//按钮

builder.setPositiveButton("确认",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){

ActivityCollector.finishAll();

Intentintent=newIntent(context,LoginActivity.class);context.startActivity(intent);

}

});builder.show();

}

}

}

步骤7修改AndroidManifest.xml代码如下所示

<manifestxmlns:android="/apk/res/android"package="com.example.broadcastbestpractice">

<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme">

<activityandroid:name=".MainActivity"/>

<activityandroid:name=".LoginActivity">

<intent-filter>

<actionandroid:name="ent.action.MAIN"/>

<categoryandroid:name="ent.category.LAUNCHE R"/></intent-filter>

</activity>

</application>

</manifest>

程序运行效果如下所示

实验结论及总结

成绩

教师签字

日期

inux国外美老牌PhotonVPS月$2.5 ,Linux系统首月半价

PhotonVPS 服务商我们是不是已经很久没有见过?曾经也是相当的火爆的,我们中文习惯称作为饭桶VPS主机商。翻看之前的文章,在2015年之前也有较多商家的活动分享的,这几年由于服务商太多,乃至于有一些老牌的服务商都逐渐淡忘。这不有看到PhotonVPS商家发布促销活动。PhotonVPS 商家七月份推出首月半价Linux系统VPS主机,首月低至2.5美元,有洛杉矶、达拉斯、阿什本机房,除提供普...

野草云99元/月 ,香港独立服务器 E3-1230v2 16G 30M 299元/月 香港云服务器 4核 8G

野草云月末准备了一些促销,主推独立服务器,也有部分云服务器,价格比较有性价比,佣金是10%循环,如果有时间请帮我们推推,感谢!公司名:LucidaCloud Limited官方网站:https://www.yecaoyun.com/香港独立服务器:CPU型号内存硬盘带宽价格购买地址E3-1230v216G240GB SSD或1TB 企盘30M299元/月点击购买E5-265016G240GB SS...

DMIT$10.9/月,日本VPS/三网直连/1核1.5G内存/20GB存储/1Gbps端口

优惠码年付一次性5折优惠码:TYO-Lite-Open-Beta-1y-50OFF永久8折优惠码:TYO-Lite-Open-Beta-Recur-20OFF日本vpsCPU内存SSD流量带宽价格购买1核1.5G20 GB4 TB1Gbps$10.9/月购买2核2 G40 GB6 TB1Gbps$16.9/月购买2核4 G60 GB8 TB1Gbps$21.9/月购买4核4 G80 GB12 TB...

jsp服务器为你推荐
pcllenchromehttp://www.huajinsc.cn/支持ipad支持ipad支持ipad支持ipad支持ipadVTLHiosC1:山东品牌商品馆photoshop技术PS技术是干什么的,如何使用PS技术?
独立ip主机 enzu 台湾服务器 轻博客 tk域名 xen dropbox网盘 一元域名 gg广告 刀片式服务器 国外代理服务器软件 能外链的相册 常州联通宽带 服务器维护 新加坡空间 工信部网站备案查询 iki 阵亡将士纪念日 聚惠网 512内存 更多