目录

应用安全检测API

系统特性

  1. 病毒应用检测率高,权威机构验证:病毒应用检测率99%。
  2. 基于行为检测未知威胁的能力。

业务流程

  1. 您的App集成HMS Core SDK,调用安全检测服务。
  2. 安全检测服务向您的App返回恶意应用程序列表。

典型场景

您可获取恶意应用列表,基于风险(风险应用/病毒应用)评估是否限制App行为。

应用开发

[h2]调用AppsCheck API

您可直接调用SafetyDetectClient的getMaliciousAppsList获取恶意应用列表:

“Java”
private void invokeGetMaliciousApps() {
        SafetyDetectClient appsCheckClient = SafetyDetect.getClient(MainActivity.this);
        Task task = appsCheckClient.getMaliciousAppsList();
        task.addOnSuccessListener(new OnSuccessListener<MaliciousAppsListResp>() {
            @Override
            public void onSuccess(MaliciousAppsListResp maliciousAppsListResp) {
                // Indicates that communication with the service was successful.
                // Use resp.getMaliciousApps() to get malicious apps data.
                List<MaliciousAppsData> appsDataList = maliciousAppsListResp.getMaliciousAppsList();
                // Indicates get malicious apps was successful.
                if(maliciousAppsListResp.getRtnCode() == CommonCode.OK) {
                    if (appsDataList.isEmpty()) {
                        // Indicates there are no known malicious apps.
                        Log.i(TAG, "There are no known potentially malicious apps installed.");
                    } else {
                        Log.i(TAG, "Potentially malicious apps are installed!");
                        for (MaliciousAppsData maliciousApp : appsDataList) {
                            Log.i(TAG, "Information about a malicious app:");
                            // Use getApkPackageName() to get APK name of malicious app.
                            Log.i(TAG, "APK: " + maliciousApp.getApkPackageName());
                            // Use getApkSha256() to get APK sha256 of malicious app.
                            Log.i(TAG, "SHA-256: " + maliciousApp.getApkSha256());
                            // Use getApkCategory() to get category of malicious app.
                            // Categories are defined in AppsCheckConstants
                            Log.i(TAG, "Category: " + maliciousApp.getApkCategory());
                        }
                    }
                }else{
                    Log.e(TAG,"getMaliciousAppsList failed: "+maliciousAppsListResp.getErrorReason());
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception e) {
                // An error occurred while communicating with the service.
                if (e instanceof ApiException) {
                    // An error with the HMS API contains some
                    // additional details.
                    ApiException apiException = (ApiException) e;
                    // You can retrieve the status code using the apiException.getStatusCode() method.
                    Log.e(TAG, "Error: " +  SafetyDetectStatusCodes.getStatusCodeString(apiException.getStatusCode()) + ": " + apiException.getStatusMessage());
                } else {
                    // A different, unknown type of error occurred.
                    Log.e(TAG, "ERROR: " + e.getMessage());
                }
            }
        });
    }
“Kotlin”
private fun getMaliciousApps() {
	SafetyDetect.getClient(this)
			.maliciousAppsList
			.addOnSuccessListener { maliciousAppsListResp ->
				val appsDataList: List<MaliciousAppsData> = maliciousAppsListResp.maliciousAppsList
				if (maliciousAppsListResp.rtnCode == CommonCode.OK) {
					if (appsDataList.isEmpty()) {
						val text = "No known potentially malicious apps are installed."
						Toast.makeText(this!!.applicationContext, text, Toast.LENGTH_SHORT).show()
					} else {
						for (maliciousApp in appsDataList) {
							Log.e(TAG, "Information about a malicious app:")
							Log.e(TAG, "  APK: " + maliciousApp.apkPackageName)
							Log.e(TAG, "  SHA-256: " + maliciousApp.apkSha256)
							Log.e(TAG, "  Category: " + maliciousApp.apkCategory)
						}
						val maliciousAppAdapter: ListAdapter = MaliciousAppsDataListAdapter(appsDataList, requireContext())
						fg_list_app.adapter = maliciousAppAdapter
					}
				} else {
					val msg = ("Get malicious apps list failed! Message: "
							+ maliciousAppsListResp.errorReason)
					Log.e(com.huawei.hms.safetydetect.sample.SafetyDetectAppsCheckAPIFragment.TAG, msg)
					Toast.makeText(this!!.applicationContext, msg, Toast.LENGTH_SHORT).show()
				}
			}
			.addOnFailureListener { e -> // There was an error communicating with the service.
				val errorMsg: String?
				errorMsg = if (e is ApiException) {
					// An error with the HMS API contains some additional details.
					val apiException = e as ApiException
					SafetyDetectStatusCodes.getStatusCodeString(apiException.statusCode) +
							": " + apiException.message
					// You can use the apiException.getStatusCode() method to get the status code.
				} else {
					// Unknown type of error has occurred.
					e.message
				}
				val msg = "Get malicious apps list failed! Message: $errorMsg"
				Log.e(com.huawei.hms.safetydetect.sample.SafetyDetectAppsCheckAPIFragment.TAG, msg)
				Toast.makeText(this!!.applicationContext, msg, Toast.LENGTH_SHORT).show()
			}
}

校验逻辑请参见客户端示例代码中AppsCheck示例代码部分。