android关闭应用及获取运营商ISP

1.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.glsite.othertest"><uses-permission android:name="android.permission.READ_PHONE_STATE"/><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"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

2.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><ImageViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/togglebutton"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="Quit"android:text="Quit"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="ISP"android:text="ISP"/></LinearLayout>

3.BaseActivity 运行时权限

package com.glsite.othertest;import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;/*** @author Admin* @version $Rev$* @des ${TODO}* @updateAuthor $Author$* @updateDes ${TODO}*/
public class BaseActivity extends AppCompatActivity {//**************** Android M Permission (Android 6.0权限控制代码封装)private int permissionRequestCode = 88;private PermissionCallback permissionRunnable;public interface PermissionCallback {void hasPermission();void noPermission();}/*** Android M运行时权限请求封装** @param permissionDes 权限描述* @param runnable      请求权限回调* @param permissions   请求的权限(数组类型),直接从Manifest中读取相应的值,比如Manifest.permission.WRITE_CONTACTS*/public void performCodeWithPermission(@NonNull String permissionDes, PermissionCallback runnable, @NonNull String... permissions) {if (permissions == null || permissions.length == 0)return;//        this.permissionrequestCode = requestCode;this.permissionRunnable = runnable;if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.M) || checkPermissionGranted(permissions)) {if (permissionRunnable != null) {permissionRunnable.hasPermission();permissionRunnable = null;}} else {//permission has not been granted.requestPermission(permissionDes, permissionRequestCode, permissions);}}private boolean checkPermissionGranted(String[] permissions) {boolean flag = true;for (String p : permissions) {if (ActivityCompat.checkSelfPermission(this, p) != PackageManager.PERMISSION_GRANTED) {flag = false;break;}}return flag;}private void requestPermission(String permissionDes, final int requestCode, final String[] permissions) {if (shouldShowRequestPermissionRationale(permissions)) {/*1. 第一次请求权限时,用户拒绝了,下一次:shouldShowRequestPermissionRationale()  返回 true,应该显示一些为什么需要这个权限的说明2.第二次请求权限时,用户拒绝了,并选择了“不在提醒”的选项时:shouldShowRequestPermissionRationale()  返回 false3. 设备的策略禁止当前应用获取这个权限的授权:shouldShowRequestPermissionRationale()  返回 false*/// Provide an additional rationale to the user if the permission was not granted// and the user would benefit from additional context for the use of the permission.// For example, if the request has been denied previously.//            Snackbar.make(getWindow().getDecorView(), requestName,//                    Snackbar.LENGTH_INDEFINITE)//                    .setAction(R.string.common_ok, new View.OnClickListener() {//                        @Override//                        public void onClick(View view) {//                            ActivityCompat.requestPermissions(BaseAppCompatActivity.this,//                                    permissions,//                                    requestCode);//                        }//                    })//                    .show();//如果用户之前拒绝过此权限,再提示一次准备授权相关权限new AlertDialog.Builder(this).setTitle("提示").setMessage(permissionDes).setPositiveButton("授权", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ActivityCompat.requestPermissions(BaseActivity.this, permissions, requestCode);}}).show();} else {// Contact permissions have not been granted yet. Request them directly.ActivityCompat.requestPermissions(BaseActivity.this, permissions, requestCode);}}private boolean shouldShowRequestPermissionRationale(String[] permissions) {boolean flag = false;for (String p : permissions) {if (ActivityCompat.shouldShowRequestPermissionRationale(this, p)) {flag = true;break;}}return flag;}/*** Callback received when a permissions request has been completed.*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) {if (requestCode == permissionRequestCode) {if (verifyPermissions(grantResults)) {if (permissionRunnable != null) {permissionRunnable.hasPermission();permissionRunnable = null;}} else {Toast.makeText(this, "暂无权限执行相关操作!", Toast.LENGTH_SHORT).show();if (permissionRunnable != null) {permissionRunnable.noPermission();permissionRunnable = null;}}} else {super.onRequestPermissionsResult(requestCode, permissions, grantResults);}}public boolean verifyPermissions(int[] grantResults) {// At least one result must be checked.if (grantResults.length < 1) {return false;}// Verify that each required permission has been granted, otherwise return false.for (int result : grantResults) {if (result != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}//********************** END Android M Permission ****************************************
}

4.MainActivity.java

package com.glsite.othertest;import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 两种程序退出方式* @param view*/public void Quit(View view) {// 1.//        android.os.Process.killProcess(android.os.Process.myPid());// 2.System.exit(0);}/*** 两种获取运营商ISP的方式* @param view*/public void ISP(View view) {//        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
//            // TODO: Consider calling
//            //    ActivityCompat#requestPermissions
//            // here to request the missing permissions, and then overriding
//            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
//            //                                          int[] grantResults)
//            // to handle the case where the user grants the permission. See the documentation
//            // for ActivityCompat#requestPermissions for more details.
//            return;
//        }
//        TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//        /** 获取SIM卡的IMSI码
//         * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,
//         * 储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成,
//         * 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成,
//         * 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。
//         * 唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可
//         */
//        String imsi = telManager.getSubscriberId();
//        if(imsi!=null){
//            if(imsi.startsWith("46000") || imsi.startsWith("46002")){//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号
//                //中国移动
//                System.out.println("中国移动");
//            }else if(imsi.startsWith("46001")){
//                //中国联通
//                System.out.println("中国联通");
//            }else if(imsi.startsWith("46003")){
//                //中国电信
//                System.out.println("中国电信");
//            }
//        }TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);String operator = telManager.getSimOperator();if(operator!=null){if(operator.equals("46000") || operator.equals("46002")){//中国移动System.out.println("中国移动");}else if(operator.equals("46001")){//中国联通System.out.println("中国联通");}else if(operator.equals("46003")){//中国电信System.out.println("中国电信");}}}
}

android关闭应用及获取运营商ISP,判断sim卡属于哪个运营商相关推荐

  1. android sim卡分析,Android 判断SIM卡属于哪个移动运营商详解及实例

    Android 判断SIM卡属于哪个移动运营商 第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (Telephon ...

  2. php 判断联通移动电信,Android 判断SIM卡是中国移动\中国联通\中国电信(移动运营商)...

    第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServi ...

  3. Android 系统(259)---获取本机号码及sim卡信息

    获取本机号码及sim卡信息 一.SIM卡存储的数据可分为四类,它们分别是: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI ...

  4. Android 7.0 高通平台-telephony-机器无Sim卡情况下,获取SIM卡状态方法getSimState偶现为6,而不是1

    TelephonyManager.java -------->getSimState接口 /** * Returns a constant indicating the state of the ...

  5. android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. 读取的 ...

  6. android 监听sim卡状态,android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. imp ...

  7. 获取手机号码/判断Sim卡状态

    /** * 获取手机中的电话号码 * @param Activity */ public void getName(Activity activity) { Cursor cursor = getCo ...

  8. Android判断SIM卡是否存在

    Android代码打电话的时候,先判断SIM卡存不存 /*** 打电话*/ public static void callPhone(Context context, String phone){if ...

  9. android sim 状态,Android - 判断SIM卡状态

    Android判断SIM卡状态, 是否插入SIM卡. 例如: 根据SIM判断优先使用的网络类型. SIM卡状态 /** * 判断是否包含SIM卡 * * @return 状态 */ public st ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(四 )仿射变换
  2. LInux初始学习篇:基本命令使用
  3. 让您的开机时间和打开网页速度如飞一样
  4. Spring Security实战教程2021版即将下线,2022版即将上线!
  5. 逆向python生成的可执行文件
  6. 67、ulimit的使用
  7. 施一公:如何提高英文的科研写作能力
  8. DFS HDOJ 2181 哈密顿绕行世界问题
  9. 【通信】基于matlab量子密钥分发密钥率仿真【含Matlab源码 1662期】
  10. 让人等不及的潮州小吃“来不及”
  11. Win2D 官方文章系列翻译 - DPI (每英寸点数)和 DIPs(设备独立像素)
  12. 问卷调查报告html模版,问卷调查报告的格式
  13. 剖析广州“开四停四”交通限行的实现技术
  14. 谷歌地图的API应用
  15. springboot实现支付宝支付功能
  16. 修改IP的cmd命令
  17. Android MVP伴侣,Nucleus框架使用简介
  18. 微信公众号开发C#系列-12、微信前端开发利器:WeUI
  19. 干货!基于常识图谱和混合策略的情绪支持对话系统
  20. Keil编译——warning:implicit declaration of function “XXXX“ is invalid in C99

热门文章

  1. java 对话框打开与保存
  2. schema在oracle里是什么意思
  3. 使用staatus和defaultStatus属性改变状态栏信息
  4. 2008年下半年软件水平考试之程序员试题分析
  5. 在redis上实现分布式锁
  6. ASP.NET 文件操作类
  7. Chrome浏览器快速获取静态控件的XPATH
  8. 智能指针——C++实现
  9. 「Ruby Sqlite3」How to install sqlite3 for ruby? (solve: sqlite-ruby no such file...)
  10. OLE-只读性质的EXCEL