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

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

###1. 蒲公英官网注册应用,获取AppId做为惟一标识;android

###2. 下载sdk,获取pgyer_sdk_2.7.4.jar包。 网址:https://www.pgyer.com/doc/view/sdk_downloadgit

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

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. 配置 AndroidManifestapp

<!-- 必选-->
<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:maven

在application节点下添加:ide

<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,文件内添加:gradle

<?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);