• 【Android开发】【第三方SDK】蒲公英摇一摇


    摇一摇用户信息反馈功能:用户通过摇晃手机或者触发按钮,弹出反馈信息界面,填写个人意见,上传服务器的功能。

    1. 蒲公英官网注册应用,获取AppId作为唯一标识;

    2. 下载sdk,获取pgyer_sdk_2.7.4.jar包。

     网址:https://www.pgyer.com/doc/view/sdk_download
    

    3. 配置project下的build.gradle文件

    allprojects {
        repositories {
            jcenter()
            maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }
        }
    }
    

    4. 配置module下的build.gradle文件

    dependencies {
        compile 'com.pgyersdk:sdk:2.7.3'
    }
    

    或者将获取的pgyer_sdk_2.7.4.jar放到libs目录,右键添加到项目。

    5. 配置 AndroidManifest

    <!-- 必选-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <!-- 获取设备信息 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取MAC地址-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读写sdcard,storage等等 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 允许程序录制音频 -->
    <uses-permission android:name="android.permission.GET_TASKS"/>
    
    
    <!-- 可选-->
    <uses-permission android:name="android.permission.READ_LOGS" /> <!-- 获取logcat日志 -->
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
    <!-- 可选-->
        <activity android:name="com.pgyersdk.activity.FeedbackActivity"/>
    
    <!-- 必选-->
        <meta-data
            android:name="PGYER_APPID"
            android:value="4b6e8877dfcc2462bedb37dcf66b6d87" >
        </meta-data>
    </application>
    

    6. Android 7.0还应该配置 AndroidManifest:

    在application节点下添加:

    <provider android:name="android.support.v4.content.FileProvider"
                android:authorities="您自定义provider file值"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/provider_paths"/>
    </provider>
    

    在res目录下新建文件夹xml,新建文件:provider_paths.xml,文件内添加:

    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <external-path path="Android/data/com/pgyersdk" name="files_root" />
        <external-path path="." name="external_storage_root" /></paths>
    

    7, 在MainActivity中添加java代码。

    7-1 . onCreate方法:
    //动态请求权限
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    requestPermissions(
                            new String[] { Manifest.permission.READ_EXTERNAL_STORAGE },
                            REQUEST_CODE_READ_EXTERNAL_STORAGE_PERMISSIONS);
                    requestPermissions(
                            new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
                            REQUEST_CODE_WRITE_EXTERNAL_STORAGE);
                }
            }
    
    7-2. 添加权限请求监听
    @SuppressLint("NewApi")
        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            switch (requestCode) {
                case REQUEST_CODE_WRITE_EXTERNAL_STORAGE: {
                    for (int i = 0; i < permissions.length; i++) {
                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
    
                        } else {
    
                        }
                    }
                }
                case REQUEST_CODE_READ_EXTERNAL_STORAGE_PERMISSIONS: {
                    for (int i = 0; i < permissions.length; i++) {
                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                            Toast.makeText(this, "允许读写存储!", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(this, "未允许读写存储!", Toast.LENGTH_SHORT).show();
                        }
                    }
                }
                break;
                default: {
                    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                }
            }
        }
    
    7-3. onResume方法,初始化Activity类型的UI:
           PgyFeedbackShakeManager.setShakingThreshold(1000);
            FeedbackActivity.setBarImmersive(false);
            // 设置顶部导航栏和底部bar的颜色
            FeedbackActivity.setBarBackgroundColor("#ff0000");
            // 设置顶部按钮和底部按钮按下时的反馈色
            FeedbackActivity.setBarButtonPressedColor("#ff0000");
            // 设置颜色选择器的背景色
            FeedbackActivity.setColorPickerBackgroundColor("#ff0000");
            PgyFeedbackShakeManager.register(MainActivity.this, false);
    

    也可以是dialog类型的UI,那样就不用配置FeedbackActivity。

    7-4. onPause方法
    PgyFeedbackShakeManager.unregister();
    

    以上的配置,是配置好了以后,摇一摇手机就会显示UI界面。
    如果是想通过点击按钮触发显示反馈界面,则可以添加如下代码

    FeedbackActivity.setBarImmersive(false);
    PgyFeedback.getInstance().showActivity(mContext);
    
  • 相关阅读:
    [转]java.lang.OutOfMemoryError: Java heap space内存不足问题
    xx
    HTTP协议详解--(转)
    树的子结构
    合并两个排序的链表
    链表反转
    环的入口节点
    链表中倒数第k个节点 (相关的 单链表的中间节点!)
    正则表达式
    表示数值的字符串
  • 原文地址:https://www.cnblogs.com/neo-java/p/10184932.html
Copyright © 2020-2023  润新知