2017-03-19 2 views
0

시스템의 다운로드 관리자를 사용하여 서버에서 파일을 가져 오지만 일부 사용자는 모바일에서 다운로드 관리자의 기능을 사용하지 못할 수 있습니다. 그렇다면 프로그램을 사용하여 앱에서 이러한 상황을 어떻게 확인하고 사용자가이를 활성화하는 데 도움이되는 팁을 제공 할 수 있습니까? 감사. 여기사용자가 downloadmanager를 비활성화했는지 확인하는 방법

내 프로그램의 일부 샘플 코드 :

private long downloadFile(Context context, String downloadUrl, String destFilename, boolean showNotify) { 
    // ...   

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUrl.trim())); 
    request.setTitle(destFilename); 
    request.setDestinationInExternalFilesDir(context, null, destFilename); 
    request.setNotificationVisibility(showNotify ? DownloadManager.Request.VISIBILITY_VISIBLE : 
      DownloadManager.Request.VISIBILITY_HIDDEN); 

    // get the downloadManager 
    mDownloadManager = (DownloadManager) getAppContext().getSystemService(Context.DOWNLOAD_SERVICE); 

    long downloadId = mDownloadManager.enqueue(request); 
    VLog.r(TAG, " downloadFile id : " + downloadId + " url : " + downloadUrl); 
    downloadIds.put(downloadId, downloadUrl); 

    return downloadId; 
} 
+0

하나의 해결책은 다운로드 관리자 패키지가 PackageManager의 "getApplicationEnabledSetting"메소드를 통해 설치되었는지 여부를 확인하는 것입니다. 단점은 패키지의 이름을 가져야하고 휴대 전화마다 다를 수 있다고 가정합니다 ... – Jameltheone

답변

0

소스 코드를 읽은 후, 나는이 상황을 확인하기 위해 아이디어를 얻을. DownloadManager는 ContentProvider를 기반으로 구현되었으므로 DownloadManager의 "ContentProviderClient"를 얻으려고합니다. 실패 할 경우 DownloadManager에서 문제가있는 것입니다. 여기 샘플 코드.

public static boolean isDownloadManagerEnable() { 
    ContentProviderClient client = Util.getApplicationContext().getContentResolver().acquireContentProviderClient(Uri.parse("content://downloads/my_downloads").getAuthority()); 
    return client != null; 
} 
관련 문제