ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于android的手机安全卫士的实现心得三

2019-09-16 19:04:13  阅读:239  来源: 互联网

标签:GridView import MainActivity Intent new 安全卫士 android 心得


现在来介绍一下具体的开发过程。

首先是主界面,肯定是先写主界面的activity_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:background="#000">
    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnWidth="80dp"
        android:stretchMode="spacingWidthUniform"  
        android:numColumns="2"/>
</LinearLayout>

在这里用到了GridView,

 android:stretchMode="spacingWidthUniform" 既拉伸元素间距又拉伸它们间隔

这只是一个整体布局,里面只有一个GridView,我们想让它包含我们想要完成的所有功能的图标,显示给用户,然后让用户去选择使用哪个功能。所以我们的GridView_item.xml里面就只有两个内容,既图标和lable。下面是GridView_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/img"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/ic_launcher"/>
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:layout_gravity="center"
        android:textColor="#FFF"
        android:text="文字"/>
</LinearLayout>

好了,现在主界面我们已经做完了,然后开始写主界面的实现逻辑。我们是一个功能一个功能的完成的,所以部分功能先简单的写下点击后显示一个Toast。MainActivity.java

package com.yangmiaoqing.example.myassitant;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import com.yangmiaoqing.example.myassitant.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback{
    private GridView gridView;
    private SimpleAdapter adapter;
    private List<Map<String,Object>> datalist;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // requestWindowFeature(Window.FEATURE_NO_TITLE);
        if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED
                &&ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.CALL_PHONE},1);
        }else {
            Intent intent=new Intent(MainActivity.this,blackNumService.class);
            startService(intent);
        }


        gridView=(GridView)findViewById(R.id.gridview);
        initData();
        String from[]={"img","text"};
        int[] to={R.id.img,R.id.text};
        adapter=new SimpleAdapter(this,datalist,R.layout.gridview_item,from,to);
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                switch (i){
                    case 0:
                        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                        builder.setTitle("提示").setMessage(datalist.get(i).get("text").toString()).create().show();
                        break;
                    case 1:
                        AlertDialog.Builder builder1=new AlertDialog.Builder(MainActivity.this);
                        builder1.setTitle("提示").setMessage(datalist.get(i).get("text").toString()).create().show();
                        break;
                    case 2:
                        Intent intent=new Intent(MainActivity.this,blacklist_Activity.class);
                        startActivity(intent);
                        break;
                    case 3:
                        AlertDialog.Builder builder3=new AlertDialog.Builder(MainActivity.this);
                        builder3.setTitle("提示").setMessage(datalist.get(i).get("text").toString()).create().show();
                        break;
                    case 4:
                        Intent intent1=new Intent(MainActivity.this,AppManagerActivity.class);
                        startActivity(intent1);
                        break;
                    case 5:
                        Intent intent2=new Intent(MainActivity.this,ProgressManagerActivity.class);
                        startActivity(intent2);
                        break;
                }
            }
        });
        //getSupportActionBar().hide();

    }
    void initData(){
        int icon[]={R.drawable.data,R.drawable.lock,R.drawable.phone,R.drawable.set,R.drawable.softmanage,R.drawable.task};
        String name[]={"流量监测","程序锁","通讯卫士","设置","软件管理","任务管理"};
        datalist=new ArrayList<Map<String, Object>>();
        for(int i=0;i<icon.length;i++){
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("img",icon[i]);
            map.put("text",name[i]);
            datalist.add(map);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResult){
        switch (requestCode){
            case 1:
                if(grantResult.length>0&&grantResult[0]==PackageManager.PERMISSION_GRANTED){
                    Intent intent=new Intent(MainActivity.this,blackNumService.class);
                    startService(intent);
                }else if(grantResult.length>0&&grantResult[0]==PackageManager.PERMISSION_DENIED) {
                    Log.e("MainActivity","拒绝了使用电话权限");
                    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("提示").setMessage("您拒绝了使用电话权限,请到相关设置中设置").create().show();
                }
        }
    }


}

 

关于Simpleadapter,参数详解

 

context      当前视图所关联的且正在使用的适配器所处的上下文对象

data           一个Map型列表。列表中的每个条目对应于列表中的一行。Map中包含每一行的数据,并且包括所有的条目(其被详细说明在数据源处)把data理解成将要装载的数据即可

resourse   一个View布局的资源标记,其定义了布局中的列表项,布局文件至少包含那些需要展示的视图项,就是想要加载的布局

form        列名的列表,其在Map中对应着每一项数据item,就是Map中的资源数组对应的键值,map中的键值是唯一的。

to   就是想要加载到什么地方

在MainActivity.java中还有为通讯卫士动态申请权限的代码,稍后解释

 

总结一下,主界面主要是由GridView来完成的,首先是建一个父xml,包含GridView,然后建立GridView子项布局。然后在java代码中为GridView添加一个Simpleadapter,并为Simpleadapter配置数据。最后为每一个GridView子项添加触发事件。

最后说下,所有功能的入口都在这里,以后只介绍每个功能是如何实现的。

标签:GridView,import,MainActivity,Intent,new,安全卫士,android,心得
来源: https://blog.csdn.net/yingqubaifumei/article/details/79875753

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有