Android 自带Apps 学习---DownLoadProvider

1:判断手机是否有网络连接

手机是否是漫游状态

    /**
     * Returns whether the network is available
     */
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivity =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            Log.w(Constants.TAG, "couldn't get connectivity manager");
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        if (Constants.LOGVV) {
                            Log.v(Constants.TAG, "network is available");
                        }
                        return true;
                    }
                }
            }
        }
        if (Constants.LOGVV) {
            Log.v(Constants.TAG, "network is not available");
        }
        return false;
    }

    /**
     * Returns whether the network is roaming
     */
    public static boolean isNetworkRoaming(Context context) {
        ConnectivityManager connectivity =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            Log.w(Constants.TAG, "couldn't get connectivity manager");
        } else {
            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE) {
                if (TelephonyManager.getDefault().isNetworkRoaming()) {
                    if (Constants.LOGVV) {
                        Log.v(Constants.TAG, "network is roaming");
                    }
                    return true;
                } else {
                    if (Constants.LOGVV) {
                        Log.v(Constants.TAG, "network is not roaming");
                    }
                }
            } else {
                if (Constants.LOGVV) {
                    Log.v(Constants.TAG, "not using mobile network");
                }
            }
        }
        return false;
    }

2: MiMeType 和扩展名对照
MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);

<nobr><a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a></nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#getExtensionFromMimeType(java.lang.String)">getExtensionFromMimeType</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> mimeType)</nobr>
Return the registered extension for the given MIME type.
<nobr>static <a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html"> String</a></nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#getFileExtensionFromUrl(java.lang.String)">getFileExtensionFromUrl</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> url)</nobr>
Returns the file extension or an empty string iff there is no extension.
<nobr><a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a></nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#getMimeTypeFromExtension(java.lang.String)">getMimeTypeFromExtension</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> extension)</nobr>
Return the MIME type for the given extension.
<nobr>static <a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html"> MimeTypeMap</a></nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#getSingleton()">getSingleton</a></span>()</nobr>
Get the singleton instance of MimeTypeMap.
<nobr>boolean</nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#hasExtension(java.lang.String)">hasExtension</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> extension)</nobr>
Return true if the given extension has a registered MIME type.
<nobr>boolean</nobr> <nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/webkit/MimeTypeMap.html#hasMimeType(java.lang.String)">hasMimeType</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> mimeType)</nobr>
Return true if the given MIME type has an entry in the map.

3:获取某个目录下可用空间块大小

base = Environment.getDownloadCacheDirectory();
stat = new StatFs(base.getPath());

Public Methods

<nobr>int</nobr>

<nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/os/StatFs.html#getAvailableBlocks()">getAvailableBlocks</a></span>()</nobr>

The number of blocks that are free on the file system and available to applications.

<nobr>int</nobr>

<nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/os/StatFs.html#getBlockCount()">getBlockCount</a></span>()</nobr>

The total number of blocks on the file system.

<nobr>int</nobr>

<nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/os/StatFs.html#getBlockSize()">getBlockSize</a></span>()</nobr>

The size, in bytes, of a block on the file system.

<nobr>int</nobr>

<nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/os/StatFs.html#getFreeBlocks()">getFreeBlocks</a></span>()</nobr>

The total number of blocks that are free on the file system, including reserved blocks (that are not available to normal applications).

<nobr>void</nobr>

<nobr><span class="sympad"><a href="file:///D:/tools/android-sdk-windows/docs/reference/android/os/StatFs.html#restat(java.lang.String)">restat</a></span>(<a href="file:///D:/tools/android-sdk-windows/docs/reference/java/lang/String.html">String</a> path)</nobr>

Perform a restat of the file system referenced by this object.

            final PackageManager manager = getContext().getPackageManager();
            List<ResolveInfo> activities = manager.queryIntentActivities(mainIntent, 0);
            int activityCount = activities == null ? 0 : activities.size();
            for (int i = 0; i < activityCount; i++) {
                ResolveInfo info = activities.get(i);
                String title = info.loadLabel(manager).toString();
                if (TextUtils.isEmpty(title)) {
                    title = info.activityInfo.name;
                }
                String icon = getActivityIconUri(info.activityInfo);
                inserter.prepareForInsert();
                inserter.bind(nameCol, title);
                inserter.bind(descriptionCol, description);
                inserter.bind(packageCol, info.activityInfo.applicationInfo.packageName);
                inserter.bind(classCol, info.activityInfo.name);
                inserter.bind(iconCol, icon);
                inserter.execute();
            }    

private String getActivityIconUri(ActivityInfo activityInfo) {
        int icon = activityInfo.getIconResource();
        if (icon == 0) return null;
        Uri uri = getResourceUri(getContext(), activityInfo.applicationInfo, icon);
        return uri == null ? null : uri.toString();
    }
    private static Uri getResourceUri(Context context, ApplicationInfo appInfo, int res) {
        try {
            Resources resources = context.getPackageManager().getResourcesForApplication(appInfo);
            return getResourceUri(resources, appInfo.packageName, res);
        } catch (PackageManager.NameNotFoundException e) {
            return null;
        } catch (Resources.NotFoundException e) {
            return null;
        }
    private static Uri getResourceUri(Resources resources, String appPkg, int res)
            throws Resources.NotFoundException {
        String resPkg = resources.getResourcePackageName(res);
        String type = resources.getResourceTypeName(res);
        String name = resources.getResourceEntryName(res);
        return makeResourceUri(appPkg, resPkg, type, name);
    }

    private static Uri makeResourceUri(String appPkg, String resPkg, String type, String name)
            throws Resources.NotFoundException {
        Uri.Builder uriBuilder = new Uri.Builder();
        uriBuilder.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE);
        uriBuilder.encodedAuthority(appPkg);
        uriBuilder.appendEncodedPath(type);
        if (!appPkg.equals(resPkg)) {
            uriBuilder.appendEncodedPath(resPkg + ":" + name);
        } else {
            uriBuilder.appendEncodedPath(name);
        }
        return uriBuilder.build();
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值