zoukankan      html  css  js  c++  java
  • 广播接收者(大学作业二)

    实验项目:

    广播接收者

    实验地点:

     

    实验时间:

     

    一、实验目的:

    1.掌握Android中四大组件中的广播接收者的概念和用法

    2.熟练掌握Android中广播接收者中有关系统广播的处理。

    二、实验内容与要求

    1.功能需求

    2.1 实现SD卡监听的过程并给出输出结果

    2.2 实现短信监听的过程并给出输出结果

    2.3 简单实现打电话广播事件的监听。

    注意:1.输出结果为System.out.printIn()输出即可

    2.写出详细的实现过程,要求源代码和文字说明

    三、实验步骤和结果:

    MainActivity.java:

    package com.lgqchinese.homework2;

    public class MainActivity extends AppCompatActivity {

    EditText phoneNumber;

    Button callPhone;

    private IntentFilter intentFilter;

    private SmsReceiver smsBroadcastReceiver;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    }

    public void click(View view) {

    String ipnumber = phoneNumber.getText().toString().trim();

    SharedPreferences sp = getSharedPreferences("config", 0);

    sp.edit().putString("ipnumber", ipnumber).commit();

    Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show();

    }

    }

    SdCardStartReceiver.java:

    public class SdCardStartReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if ("android.intent.action.MEDIA_MOUNTED".equals(action)){

    System.out.println("SD卡被挂载");

    }else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)){

    System.out.println("SD卡卸载了");

    }

    }

    }

    SmsReceiver.java:

    public class SmsReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();

    Object[] objects = (Object[]) bundle.get("pdus");

    for (Object pdus : objects) {

    SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus);

    String address = sms.getOriginatingAddress();

    String body = sms.getMessageBody();

    System.out.println(address+";dddd"+body);

    }

    }

    }

    CallPhoneReceiver.java:

    public class CallPhoneReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

    SharedPreferences sp = context.getSharedPreferences("config",0);

    String ipNumber = sp.getString("ipnumber","");

    String currentNumber = getResultData();

    // if (currentNumber.startsWith("0")){

    setResultData(ipNumber+currentNumber);

            System.out.println(ipNumber+currentNumber);

    // }

    }

    }

    广播注册及添加权限:

    <receiver android:name=".SdCardStartReceiver">

    <intent-filter>

    <action android:name="android.intent.action.MEDIA_MOUNTED"/>

    <action android:name="android.intent.action.MEDIA_UNMOUNTED"/>

    <data android:scheme="file"/>

    </intent-filter>

    </receiver>

    <receiver android:name=".SmsReceiver">

    <intent-filter>

    <action android:name="android.provider.Telephony.SMS_RECEIVED" />

    </intent-filter>

    </receiver>

    <receiver android:name=".CallPhoneReceiver">

    <intent-filter>

    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>

    </intent-filter>

    </receiver>

    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <uses-permission android:name="android.permission.READ_SMS" />

    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

    Sd卡

    短信:

    电话加前缀

    四、实验总结:

    通过本次实验,熟悉了广播接受者的原理和使用方法。Android6.0以后需要动态获取权限,需要再进一步学习。

    昔日我曾苍老,如今风华正茂(ง •̀_•́)ง
  • 相关阅读:
    电话续
    邀请
    Detecting versions of IE
    Android命令行
    电话
    性格形容词
    .NET 异常处理
    uva 10161 Ant on a Chessboard
    转载 ACM训练计划
    uva 253 Cube painting
  • 原文地址:https://www.cnblogs.com/lgqrlchinese/p/9923038.html
Copyright © 2011-2022 走看看