Android 7.0安装apk

Android7.0、8.0应用内安装apk实现 最近,公司线上项目发现,部分手机应用内更新下载apk后安装无反应的问题。由于测试我并未参与,得知同事的问题描述后误认为是部分机型的兼容性问题,费了半天劲。最后才发现是Andorid8.0权限问题,很是恼火啊,哈哈。鉴于此,还是把不同Android版本正确发起应用内安装的实现分享给大家。 首先将现有的Android版本进行分一下界限,Android 1.x~6.x 和Android 7.x 及An... 阅读详情

在做应用版本更新的时候使用Android 7.0的手机测试发现一个问题:下载完成安装包之后,不能跳转到安装界面,使用7.0以下的手机没遇到这种情况。

对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。
如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。

要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。
既然Android 7.0对文件访问做了限制,下面介绍如何利用FileProvider类进行授权:

1 . 在清单文件中定义一个FileProvider

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
        ...>
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.example.myapp.fileprovider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>
        ...
    </application>
</manifest>
2 . 指定共享目录
在上面代码中android:resource="@xml/filepaths" ,说明在我们的项目中有一个filepaths.xml文件,它记录了我们共享文件的位置,这个文件在项目中结构中的位置 : res/xml/filepaths.xml


filepaths.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-files-path path="Download/" name="Download" />
    <!--物理路径相当于Context.getExternalFilesDir(String) + /Download/ -->
</paths>
上述内容指定了要分享文件的目录位置,对于我们下载安装apk来说,即apk文件下载到了手机的什么目录位置,一定要与自己apk的下载目录相同!
我项目中apk包的下载位置是

context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
/storage/emulated/0/Android/data/your-package/files/Download/appName.apk
下面还有一些path路径,请根据自己apk包的下载位置选择合适的path
<files-path name="name" path="path" /> 物理路径相当于Context.getFilesDir() + /path/

<cache-path name="name" path="path" /> 物理路径相当于Context.getCacheDir() + /path/

<external-path name="name" path="path" /> 物理路径相当于Environment.getExternalStorageDirectory() + /path/

<external-files-path name="name" path="path" /> 物理路径相当于Context.getExternalFilesDir(String) + /path/

<external-cache-path name="name" path="path" /> 物理路径相当于Context.getExternalCacheDir() + /path/
3 . 安装apk
private void installApk() {
    File file = new File(apk包的路径);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if(Build.VERSION.SDK_INT>=24) { //Android 7.0及以上
        // 参数2 清单文件中provider节点里面的authorities ; 参数3  共享的文件,即apk包的file类
        Uri apkUri = FileProvider.getUriForFile(context, "com.example.myapp.fileprovider", file);
        //对目标应用临时授权该Uri所代表的文件
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    }else{
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
    }
    context.startActivity(intent);
}

想了解更多Android 7.0与之前版本的不同,详情请看 Android 7.0 行为变更

安卓7.0新系统解包软件 安卓7.0新系统解包软件,支持6.0,个人亲测有效,一键解包,打包工具 立即下载

相关推荐

Android7.0下载Apk自动安装

下载自动安装Demo,兼容7.0

android官方升级包下载安装,安卓7.0正式版安装包下载

安卓7.0正式版安装包是一款针对低端手机打造的安卓系统。目前运行Android 7.0开发者预览版的设备能够第一时间收到推送,而还处于Android 6.0的设备则需要更长时间,用户可以通过线刷的方式来让自己的手机进行升级。【全新功能】分屏多任务进入后台多任务管理页面,然后按住其中一个卡片,然后向上拖动至顶部即可开启分屏多任务,支持上下分栏和左右分栏,允许拖动中间的分割线调整两个APP所占的比例。...

weixin_39696197的博客 1万+

Android 7.0下载安装APK

Android 7.0下载安装APK博客地址:http://blog.csdn.net/jsonnan/article/details/74353748

android 7.0安装包,安卓7.0安装包,安卓7.0通用升级安装包免费预约 v7.0-手游汇

安卓7.0安装包解决了之前老版本系统出现的一些问题,使手机运行更加流畅快速,减少出现卡顿死机的情况,并且新增了许多个性化功能,比如流量保护模式,会在超出手机设定流量范围后进行提醒,避免产生不必要的流量费。安卓7.0通用升级包vivo功能:1.从顶部下划打开快捷设置页,然后长按其中的设置图标,齿轮旋转10秒钟左右即可提示已开启系统调谐器。2.谷歌在安卓7.0中重新加入了夜间深色主题模式,该功能依然需...

weixin_26821003的博客 4225

Android7.0版本升级安装

处理Android7.0版本升级和自动安装存在的问题,对权限的控制问题。

Android7.0下载APK自装

【源码免费下载链接】:https://renmaiwang.cn/s/kjabn 在Android系统中,自7.0版本起引入了名为"安全安装器"(Scoped Installers)的新特性。这一新增功能项旨在限制非Google Play商店应用的自动安装,并要求用户主动申请必要的权限。本文将深入探讨在Android系统中通过自动化流程下载并安装APK包的技术细节。理解这些权限控制机制对于成功实施APK自动安装至关重要。 需要特别注意的是,该危险权限通常只有系统应用才能申请。在Android配置文件中指定该权限:```xml<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>``` 启动数据写入过程时,请确保获取必要的安装参数对象,并检查当前用户是否已授予所需权限。如果授权成功,则可以利用`PackageInstaller`类来完成APK的安装。这个新功能在Android 7.0中首次出现,提供了简便的方式进行自动化的APK安装操作。 以下是一个完整的示例代码片段:```java// 获取必要的安装参数对象PackageManager packageName = getPackageName();final PackageInstallerSessionParams params = new PackageInstallerSessionParams(PackageInstallerSessionParams.MODE_FULL_INSTALL);params.setPackageName(packageName);int sessionId = packageInstaller.createSession(params);``` 启动数据写入过程时,请确保获取必要的安装参数对象,并检查当

android 7.0以上安装apk

由于安卓7.0加强了用户权限问题,所以我们需要稍作修改,让我们的程序正常升级安装apk 1.首先在res下建立一个xml文件夹 我们随便起个名字,就叫file_path好了 这里注意我们要修改里面的包名和文件夹名改成自己程序的 <?xml version="1.0" encoding="utf-8"?> <paths> <external-pat...

柳的博客 2654

瑞友天翼应用虚拟化系统(GWT)V7.0服务器端和谐补丁

瑞友天翼应用虚拟化系统(GWT)V7.0服务器端和谐补丁

android 7.0安装apk

今天做项目中的版本更新功能,竟然发现以前安装apk的代码在Android7.0中用不了,于是乎各种百度,终于解决了这个问题,故在此与大家分享,希望能帮到大家。 Android系统升级到7.0之后,安全性提高了不少,直接使用我们之前安装apk的代码app会直接崩掉,看下面的代码和错误: Intent intent = new Intent(Intent.ACTION_VIEW); intent...

qq_36887882的博客 4411

信号转换为图像 时域频域分析

一维信号如何转化为图像?深度学习如何学习 1.当然,直接1d卷积也是可以的。 2. 以信号强度的数值作为纵坐标,以时间为横坐标绘制信号点就可以了。 周霖那个即是 要看看代码是如何做的, 即使是单导联 5000个点,怎么变成50005000的分辨率的 3. 直接把多通道的一维信号合并成二维图像,然后直接按图像卷积的方法去做~~ 2225000这样一个图 ~可以看看语音处理的相关Net,其中比较...

王不留行嘿呦嘿 2万+

遥感大模型之Prithvi的关键技术解读

Prithvi系列模型开创了遥感领域基础模型新范式,通过海量多源时空数据(HLS和SAR)与Vision Transformer架构的深度融合,采用掩码自编码器进行自监督预训练,实现了强大的地球观测表征能力。该技术体系突破传统方法在全局建模、多模态融合和时空分析上的局限,仅需少量标注数据即可在土地分类、灾害监测等任务上取得优异表现。从初代3亿参数到Prithvi-EO-2.0的10亿参数升级,展现了模型可扩展性,为构建地球数字孪生智能基座奠定基础。

panshengwu的博客 864

android apk无法安装高版本号,android 使用FileProvider 兼容apk 在7.0版本无法安装

源头都是因为一个bugandroid.os.FileUriExposedException:file:///storage/emulated/0/mwh/app.apk exposed beyond app through Intent.getData()复制代码因为这个bug 显示 原来的 apk安装方法无法在高于7.0 的手机系统上安装apk了。所以就得需要使用FileProvider 来做兼...

weixin_42613572的博客 895

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

在大模型微调中,我们一般使用Alpaca 和 ShareGPT和两种格式的数据集。

Science prince的博客 1095

unity 调用android 的 aar包 在安卓版本7.0 以上 安装覆盖更新版本 apk

此博客在于解决unity开发人员 android7.0权限 不能覆盖安装apk问题 直接上代码 直接附上项目下载地址 这是unity 调用android 的 aar包 可以在安卓版本7.0 上安装覆盖更新版本。 附网址 https://download.csdn.net/download/qq_39735878/11183662 ...

qq_39735878的博客 775

看懂 SAP S/4HANA 产品主数据里的 GTIN:一串号码背后的全球商品识别与业务协同

SAP S/4HANA中的GTIN管理是企业供应链运营的关键环节。本文深入解析GTIN的业务内涵及其在SAP系统中的实现方式:1) GTIN是全球通用的商品标识码,不同于企业内部物料编码;2) SAP主数据中GTIN与计量单位强绑定,需为不同包装层级维护独立GTIN;3) 同一产品可能因渠道、供应商差异存在多个GTIN;4) GTIN贯穿零售POS、仓储管理、EDI订单等核心业务流程;5) 通过典型案例说明错误维护GTIN将导致收银异常、仓库作业低效等运营问题。文章强调GTIN管理需结合包装层级、计量单位等

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1431

详细分析一下华为自研的MetaERP系统中的合并报表流程与规则

华为MetaERP合并报表系统针对其全球化复杂业务量身定制,采用五层自动化架构:统一数据采集、多币种转换、智能对账协同、规则化抵消处理及多维分析输出。系统核心在于可配置的智能规则引擎,涵盖股权合并范围、内部交易抵消、未实现利润计算等复杂场景,实现多准则并行处理。相比传统软件,该系统深度集成业务数据、支持准实时合并,并通过参数化配置快速适应组织变革,成为华为全球财务管控的"数字神经中枢",在效率、准确性和安全性上具有显著优势。

金牌架构师 673

下载安装APK(兼容Android7.0)

我们使用手机的时候经常会看到应用程序提示升级,大部分应用内部都需要实现升级提醒和应用程序文件(APK文件)下载。一般写法都差不多,比如在启动app的时候,通过api接口获得服务器最新的版本号,然后和本地的版本号比较,来判断是否需要弹出提示框下载,当然也可以通过推送的自定义消息来实现。我们这里主要讨论的是应用程序下载,并在通知栏提醒下载完成。 实现过程大致分为三步: 创建一个service 在ser

老于的笔记的专栏 3万+

国科大学习资料--计算机视觉--期末考试解析

国科大学习资料–计算机视觉(胡占义)–期末考试解析 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

无名何许人的博客 2464

android 7 apk 安装程序,Android 7.0 apk安装

简介Android 7.0开始,系统修改了安全机制:限定应用在默认情况下只能访问自身应用数据。所以当我们想通过File对象访问其它package数据时,就需要借助于ContentProvider、FileProvider这些组件,否则会报FileUriExposedException异常。由此,当我们在app内想要访问SD卡download目录下的apk文件就会报错。这里需要借助FileProvi...

weixin_42651281的博客 1295

Windows原生环境配置Tensorflow使用GPU

本文讲解如何在Windows原生环境搭建可调用GPU设备进行计算的Tensorflow2.x环境。 区别于WSL,使用Windows原始环境作为开发环境。

天然玩家的博客 1497

Python 爬虫教程:财经新闻实时抓取(最新资讯 + 关键词提取)

在当今信息爆炸的时代,财经新闻的实时获取对于投资者、研究人员以及普通大众来说都具有重要的价值。通过 Python 爬虫技术,我们可以高效地抓取财经新闻,并提取其中的关键信息,以便更好地进行数据分析和决策支持。本文将详细介绍如何使用 Python 编写一个财经新闻实时抓取系统,并结合关键词提取技术,帮助读者快速掌握 Python 爬虫的核心技能。

yansideyucsdn的博客 1049

android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解

Android安装apk文件并适配Android 7.0详解首先在AndroidManifest.xml文件,activity同级节点注册provider:android:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.file_provider"android:exported...

weixin_35732670的博客 1162

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android7.0应用内安装apk适配

一、为什么要适配 从 2018 年 8 月 1 日起,所有向 Google Play 首次提交的新应用都必须针对 Android 8.0 (API 等级 26) 开发; 2018 年 11 月 1 日起,所有 Google Play 的现有应用更新同样必须针对 Android 8.0。 国内情况:为保障华为用户的使用体验,华为应用市场已在7月份启动Android P版本应用适配检测工作,针对未做适...

walk的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android7.0打开apk,Android7.0、8.0 apk安装

第一步(Android7.0 以后需配置FileProvider)在AndroidManifest.xml 配置 FileProvider为了防止重复 android:authorities 一般配置为 包名.fileProviderandroid:name="android.support.v4.content.FileProvider"android:authorities="包名.fileP...

weixin_39716417的博客 428

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何在Android7.0系统下通过Intent安装apk

如何在Android7.0系统下通过Intent安装apk Android系统升级到7.0之后,安全性提高了不少,过去我们通常是使用这样的代码进行apk的安装操作。 1 2 3 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(apkFile),

wdd1324的博客 1049
上一篇: 如何改变图片的尺寸大小得到一张缩小后的图片
下一篇: Android 设置应用的底部导航栏(虚拟按键)背景颜色
github_2011
博客等级 码龄10年 116粉丝 56原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值