android+删除相片代码,android删除手机照片

时间: 2023-10-30 13:05:57 浏览: 69
以下是删除 Android 手机相册中指定照片的代码示例: ``` File file = new File(filePath); //filePath为要删除的照片的文件路径 if (file.exists()) { boolean deleted = file.delete(); if (deleted) { //文件删除成功 } else { //文件删除失败 } } else { //文件不存在 } ``` 请注意,删除照片时需要确保用户已经授予了相应的权限,例如 `android.permission.WRITE_EXTERNAL_STORAGE` 权限。此外,删除照片可能会导致用户丢失重要数据,因此在实际应用中需要谨慎操作。
相关问题

怎么将相机拍出的照片传送到编辑页面,编辑页面照片和文本框,点击save按钮后封装成note保存到Room数据库,点击cancel按钮,返回相机拍照界面,并且删除该照片,完整代码

以下是一个实现该功能的完整代码: 首先,在布局文件中添加一个相机预览和一个保存/取消按钮: ```xml <RelativeLayout android:id="@+id/camera_preview" android:layout_width="match_parent" android:layout_height="match_parent"> <TextureView android:id="@+id/texture_view" android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:id="@+id/btn_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" android:layout_alignParentBottom="true" android:layout_alignParentStart="true"/> <Button android:id="@+id/btn_cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Cancel" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true"/> </RelativeLayout> ``` 然后,在相机预览页面中,设置 TextureView 来预览相机拍摄的画面,并且获取相机权限: ```java public class CameraPreviewActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener { private Camera mCamera; private TextureView mTextureView; private Button mBtnSave; private Button mBtnCancel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_preview); mTextureView = findViewById(R.id.texture_view); mTextureView.setSurfaceTextureListener(this); mBtnSave = findViewById(R.id.btn_save); mBtnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { saveNote(); } }); mBtnCancel = findViewById(R.id.btn_cancel); mBtnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { cancelNote(); } }); } @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { mCamera = Camera.open(); try { mCamera.setPreviewTexture(surface); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { // Ignored, Camera does all the work for us } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { mCamera.stopPreview(); mCamera.release(); return true; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { // Invoked every time there's a new Camera preview frame } private void saveNote() { // 将照片和文本框封装成 Note 对象,并保存到 Room 数据库中 } private void cancelNote() { // 删除照片,并返回相机拍照界面 File photoFile = new File(getExternalFilesDir(null), "photo.jpg"); if (photoFile.exists()) { photoFile.delete(); } Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } } ``` 在 saveNote 方法中,将照片和文本框封装成 Note 对象,并保存到 Room 数据库中: ```java private void saveNote() { EditText editText = findViewById(R.id.edit_text); String text = editText.getText().toString(); File photoFile = new File(getExternalFilesDir(null), "photo.jpg"); Note note = new Note(); note.setText(text); note.setPhotoPath(photoFile.getAbsolutePath()); AppDatabase.getDatabase(this).noteDao().insert(note); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } ``` 在 cancelNote 方法中,删除照片,并返回相机拍照界面: ```java private void cancelNote() { File photoFile = new File(getExternalFilesDir(null), "photo.jpg"); if (photoFile.exists()) { photoFile.delete(); } Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } ``` 最后,在相机拍照界面中,启动相机预览页面: ```java public class MainActivity extends AppCompatActivity { private static final int REQUEST_IMAGE_CAPTURE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnTakePhoto = findViewById(R.id.btn_take_photo); btnTakePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dispatchTakePictureIntent(); } }); } private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { File photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { ex.printStackTrace(); } if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Intent intent = new Intent(this, CameraPreviewActivity.class); startActivity(intent); finish(); } } private File createImageFile() throws IOException { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = getExternalFilesDir(null); File image = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ storageDir /* directory */ ); return image; } } ``` 在 onActivityResult 方法中,启动相机预览页面,如果拍摄成功,则会返回 RESULT_OK,否则不做任何处理。 createImageFile 方法用于创建一个临时文件来存储拍摄的照片。 注意,在 AndroidManifest.xml 文件中需要添加以下权限和 provider: ```xml <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.android.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"/> </provider> ``` 其中,file_paths.xml 文件中定义了 FileProvider 的路径: ```xml <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-files-path name="my_images" path="Pictures" /> </paths> ```

利用Grid View控件设计一个展示图片的应用程序,要求以九宫格形式展示图片,并且每张照片下面要加说明文字。该android实验总结

本实验主要涉及到Android中的GridView控件的使用,以及如何在GridView中展示图片和文字。 实验步骤: 1. 创建一个新的Android项目,命名为ImageGallery,选择Empty Activity作为模板。 2. 在activity_main.xml布局文件中添加GridView控件,代码如下: ```xml <GridView android:id="@+id/grid_view" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center"/> ``` 其中,numColumns属性表示GridView中每行展示的列数,这里设置为3列;verticalSpacing和horizontalSpacing属性表示列和行之间的垂直和水平间距;stretchMode属性表示当列宽为wrap_content时,如何分配额外的空间,这里设置为columnWidth表示每列的宽度都相等;gravity属性表示子控件在GridView中的对齐方式,这里设置为center表示居中对齐。 3. 创建一个新的布局文件item_image.xml,用于定义每个GridView中的子项,代码如下: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" android:adjustViewBounds="true" /> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#000000" android:gravity="center_horizontal" android:padding="5dp" /> </LinearLayout> ``` 其中,ImageView用于展示图片,TextView用于展示图片下方的说明文字。这里设置ImageView的scaleType属性为centerCrop,表示将图片按照比例缩放居中裁剪,使其填充整个ImageView;设置adjustViewBounds属性为true,表示保持ImageView的宽高比例不变。 4. 在MainActivity.java中,定义一个内部类ImageAdapter继承自BaseAdapter,用于为GridView提供数据和视图。 ```java public class ImageAdapter extends BaseAdapter { private Context mContext; private List<Integer> mImageIds; private String[] mTexts; public ImageAdapter(Context context, List<Integer> imageIds, String[] texts) { mContext = context; mImageIds = imageIds; mTexts = texts; } @Override public int getCount() { return mImageIds.size(); } @Override public Object getItem(int position) { return mImageIds.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if (convertView == null) { view = LayoutInflater.from(mContext).inflate(R.layout.item_image, parent, false); holder = new ViewHolder(); holder.imageView = view.findViewById(R.id.image_view); holder.textView = view.findViewById(R.id.text_view); view.setTag(holder); } else { view = convertView; holder = (ViewHolder) view.getTag(); } holder.imageView.setImageResource(mImageIds.get(position)); holder.textView.setText(mTexts[position]); return view; } class ViewHolder { ImageView imageView; TextView textView; } } ``` 其中,mImageIds是一个存放图片资源id的List,mTexts是一个存放说明文字的数组。在getView方法中,根据position获取对应的数据,然后将其绑定到ViewHolder中的ImageView和TextView上。 5. 在MainActivity.java的onCreate方法中,初始化GridView,并为其设置适配器。 ```java public class MainActivity extends AppCompatActivity { private GridView mGridView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGridView = findViewById(R.id.grid_view); List<Integer> imageIds = new ArrayList<>(); imageIds.add(R.drawable.image1); imageIds.add(R.drawable.image2); imageIds.add(R.drawable.image3); imageIds.add(R.drawable.image4); imageIds.add(R.drawable.image5); imageIds.add(R.drawable.image6); imageIds.add(R.drawable.image7); imageIds.add(R.drawable.image8); imageIds.add(R.drawable.image9); String[] texts = getResources().getStringArray(R.array.image_texts); ImageAdapter adapter = new ImageAdapter(this, imageIds, texts); mGridView.setAdapter(adapter); } } ``` 其中,通过findViewById获取GridView控件的实例,然后创建一个包含图片资源id的List和说明文字的数组,最后创建ImageAdapter适配器并为GridView设置。 6. 运行程序,可以看到九宫格形式的图片展示界面,每张图片下方都有对应的说明文字。可以通过修改imageIds和texts来添加或删除图片和说明文字。 实验总结: 本实验主要涉及到Android中的GridView控件的使用,以及如何在GridView中展示图片和文字。GridView控件可以方便地展示多个子项,并且可以灵活地设置列数、间距等属性。在使用GridView时,需要创建一个适配器类并为其提供数据和视图,然后将适配器设置给GridView即可。通过本实验的练习,可以更好地掌握GridView控件的使用和适配器类的编写。

相关推荐

下面android代码是上传的照片,现在要求上传完后吧照片从相册里删掉,怎么做? private void doSubmitUpload_W() { Map<String, Object> uploadparams = null; try { if ((mPgDialog != null) && mPgDialog.isShowing()) { mPgDialog.dismiss(); } mPgDialog = createPhotoDialog_W(R.string.photo_uploading_and_wait); mPgDialog.show(); uploadCallback_w = new AjaxCallback<JSONObject>() { @Override public void callback(String url, JSONObject json, AjaxStatus status) { if ((mPgDialog != null) && mPgDialog.isShowing()) { TakeTxPhotoActivity.this.mPgDialog.dismiss(); } // 解析结果 TakeTxPhotoActivity.this.parseUploadResult_w(url, json, status); } }; Long staffId = SessionManager.getInstance().getStaffId() == null?-1L:SessionManager.getInstance().getStaffId(); uploadparams = new HashMap<String, Object>();// ParamHelper.buildJSONParam(URLs.UPLOADFILE_API,json); byte[] photots = Bitmap2Bytes(ImageUtils.getBitmapByPath(mWorkAdapter.get( curPhotoPos_W).getThumbnailPath())); uploadparams.put("photoFile2",photots); uploadparams.put("StaffId", staffId); uploadparams.put("StaffName", session.getStaffInfo().getStaffName()); uploadparams.put("OrderID", orderId); uploadparams.put("WorkOrderID", workOrderId); uploadparams.put("TypeName", "WORK"); uploadparams.put("photosType", mWorkAdapter.get(curPhotoPos_W).getPhotosType()); Log.e(TAG, "请求参数json:" + uploadparams.toString()); // 异步网络请求 aQuery.ajax(BaseURLs.UPLOAD_KT_PHOTO, uploadparams, JSONObject.class, uploadCallback_w); } catch (Exception ex) { AlertUtils.showAlert(TakeTxPhotoActivity.this, R.string.opt_prompt, R.string.unknown_error); ex.printStackTrace(); } }

最新推荐

recommend-type

Android实现保存图片到本地并在相册中显示

本文将详细介绍Android实现保存图片到本地并在相册中显示的相关代码和技术要点。 一、保存图片到本地 在Android中,保存图片到本地需要使用文件存储机制。Android提供了两种文件存储方式:内部存储和外部存储。...
recommend-type

android开发使用例子

在进行Android开发的过程中,免不了,要开发TCP/UDP通讯的程序,下面这两段代码,分别介绍了TCP/UCP通过的一个实例: 代码一: private void tcpdata() { try { Socket s = new Socket("192.168.0.25", 65500); ...
recommend-type

android系统照相实现

在Android系统中,开发一款照相应用程序涉及到许多关键知识点,主要集中在如何正确处理用户交互、启动相机服务、获取高分辨率图像以及处理拍摄后的结果。以下是对这些知识点的详细解释: 1. **用户交互与事件监听**...
recommend-type

教育培训.exe

微信小程序源码是指开发者编写的用于创建微信小程序的代码文件,可以是包含小程序界面设计、逻辑处理、数据交互等方面的代码。通过编写源码,开发者可以实现自己想要的小程序功能和界面。 通常,微信小程序的源码包括以下几个主要部分: .json 文件:用于配置小程序的全局配置或页面配置,包括页面路径、页面标题栏样式、底部 tabBar 配置等。 .wxml 文件:用于编写小程序页面的结构,类似于HTML,用于描述页面的组件和布局。 .wxss 文件:用于编写小程序页面的样式表,类似于CSS,用于定义页面的样式和布局。 .js 文件:用于编写小程序页面的逻辑处理和交互,通过调用小程序 API 实现页面的数据处理、事件处理等功能。 开发者可以通过编辑这些源码文件来创建个性化的微信小程序,实现各种功能,例如轮播图、下拉刷新、表单提交等。在开发完成后,通过微信开发者工具将源码上传并发布到微信小程序平台,用户便可以通过微信扫描小程序码或搜索使用这个小程序。
recommend-type

matlab逻辑与流程控制

通过学习,掌握 逻辑与流程控制matlab编程
recommend-type

GO婚礼设计创业计划:技术驱动的婚庆服务

"婚礼GO网站创业计划书" 在创建婚礼GO网站的创业计划书中,创业者首先阐述了企业的核心业务——GO婚礼设计,专注于提供计算机软件销售和技术开发、技术服务,以及与婚礼相关的各种服务,如APP制作、网页设计、弱电工程安装等。企业类型被定义为服务类,涵盖了一系列与信息技术和婚礼策划相关的业务。 创业者的个人经历显示了他对行业的理解和投入。他曾在北京某科技公司工作,积累了吃苦耐劳的精神和实践经验。此外,他在大学期间担任班长,锻炼了团队管理和领导能力。他还参加了SYB创业培训班,系统地学习了创业意识、计划制定等关键技能。 市场评估部分,目标顾客定位为本地的结婚人群,特别是中等和中上收入者。根据数据显示,广州市内有14家婚庆公司,该企业预计能占据7%的市场份额。广州每年约有1万对新人结婚,公司目标接待200对新人,显示出明确的市场切入点和增长潜力。 市场营销计划是创业成功的关键。尽管文档中没有详细列出具体的营销策略,但可以推断,企业可能通过线上线下结合的方式,利用社交媒体、网络广告和本地推广活动来吸引目标客户。此外,提供高质量的技术解决方案和服务,以区别于竞争对手,可能是其市场差异化策略的一部分。 在组织结构方面,未详细说明,但可以预期包括了技术开发团队、销售与市场部门、客户服务和支持团队,以及可能的行政和财务部门。 在财务规划上,文档提到了固定资产和折旧、流动资金需求、销售收入预测、销售和成本计划以及现金流量计划。这表明创业者已经考虑了启动和运营的初期成本,以及未来12个月的收入预测,旨在确保企业的现金流稳定,并有可能享受政府对大学生初创企业的税收优惠政策。 总结来说,婚礼GO网站的创业计划书详尽地涵盖了企业概述、创业者背景、市场分析、营销策略、组织结构和财务规划等方面,为初创企业的成功奠定了坚实的基础。这份计划书显示了创业者对市场的深刻理解,以及对技术和婚礼行业的专业认识,有望在竞争激烈的婚庆市场中找到一席之地。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【基础】PostgreSQL的安装和配置步骤

![【基础】PostgreSQL的安装和配置步骤](https://img-blog.csdnimg.cn/direct/8e80154f78dd45e4b061508286f9d090.png) # 2.1 安装前的准备工作 ### 2.1.1 系统要求 PostgreSQL 对系统硬件和软件环境有一定要求,具体如下: - 操作系统:支持 Linux、Windows、macOS 等主流操作系统。 - CPU:推荐使用多核 CPU,以提高数据库处理性能。 - 内存:根据数据库规模和并发量确定,一般建议 8GB 以上。 - 硬盘:数据库文件和临时文件需要占用一定空间,建议预留足够的空间。
recommend-type

字节跳动面试题java

字节跳动作为一家知名的互联网公司,在面试Java开发者时可能会关注以下几个方面的问题: 1. **基础技能**:Java语言的核心语法、异常处理、内存管理、集合框架、IO操作等是否熟练掌握。 2. **面向对象编程**:多态、封装、继承的理解和应用,可能会涉及设计模式的提问。 3. **并发编程**:Java并发API(synchronized、volatile、Future、ExecutorService等)的使用,以及对并发模型(线程池、并发容器等)的理解。 4. **框架知识**:Spring Boot、MyBatis、Redis等常用框架的原理和使用经验。 5. **数据库相
recommend-type

微信行业发展现状及未来发展趋势分析

微信行业发展现状及未来行业发展趋势分析 微信作为移动互联网的基础设施,已经成为流量枢纽,月活跃账户达到10.4亿,同增10.9%,是全国用户量最多的手机App。微信的活跃账户从2012年起步月活用户仅为5900万人左右,伴随中国移动互联网进程的不断推进,微信的活跃账户一直维持稳步增长,在2014-2017年年末分别达到5亿月活、6.97亿月活、8.89亿月活和9.89亿月活。 微信月活发展历程显示,微信的用户数量增长已经开始呈现乏力趋势。微信在2018年3月日活达到6.89亿人,同比增长5.5%,环比上个月增长1.7%。微信的日活同比增速下滑至20%以下,并在2017年年底下滑至7.7%左右。微信DAU/MAU的比例也一直较为稳定,从2016年以来一直维持75%-80%左右的比例,用户的粘性极强,继续提升的空间并不大。 微信作为流量枢纽,已经成为移动互联网的基础设施,月活跃账户达到10.4亿,同增10.9%,是全国用户量最多的手机App。微信的活跃账户从2012年起步月活用户仅为5900万人左右,伴随中国移动互联网进程的不断推进,微信的活跃账户一直维持稳步增长,在2014-2017年年末分别达到5亿月活、6.97亿月活、8.89亿月活和9.89亿月活。 微信的用户数量增长已经开始呈现乏力趋势,这是因为微信自身也在重新寻求新的增长点。微信日活发展历程显示,微信的用户数量增长已经开始呈现乏力趋势。微信在2018年3月日活达到6.89亿人,同比增长5.5%,环比上个月增长1.7%。微信的日活同比增速下滑至20%以下,并在2017年年底下滑至7.7%左右。 微信DAU/MAU的比例也一直较为稳定,从2016年以来一直维持75%-80%左右的比例,用户的粘性极强,继续提升的空间并不大。因此,在整体用户数量开始触达天花板的时候,微信自身也在重新寻求新的增长点。 中国的整体移动互联网人均单日使用时长已经较高水平。18Q1中国移动互联网的月度总时长达到了77千亿分钟,环比17Q4增长了14%,单人日均使用时长达到了273分钟,环比17Q4增长了15%。而根据抽样统计,社交始终占据用户时长的最大一部分。2018年3月份,社交软件占据移动互联网35%左右的时长,相比2015年减少了约10pct,但仍然是移动互联网当中最大的时长占据者。 争夺社交软件份额的主要系娱乐类App,目前占比达到约32%左右。移动端的流量时长分布远比PC端更加集中,通常认为“搜索下載”和“网站导航”为PC时代的流量枢纽,但根据统计,搜索的用户量约为4.5亿,为各类应用最高,但其时长占比约为5%左右,落后于网络视频的13%左右位于第二名。PC时代的网络社交时长占比约为4%-5%,基本与搜索相当,但其流量分发能力远弱于搜索。 微信作为移动互联网的基础设施,已经成为流量枢纽,月活跃账户达到10.4亿,同增10.9%,是全国用户量最多的手机App。微信的活跃账户从2012年起步月活用户仅为5900万人左右,伴随中国移动互联网进程的不断推进,微信的活跃账户一直维持稳步增长,在2014-2017年年末分别达到5亿月活、6.97亿月活、8.89亿月活和9.89亿月活。 微信的用户数量增长已经开始呈现乏力趋势,这是因为微信自身也在重新寻求新的增长点。微信日活发展历程显示,微信的用户数量增长已经开始呈现乏力趋势。微信在2018年3月日活达到6.89亿人,同比增长5.5%,环比上个月增长1.7%。微信的日活同比增速下滑至20%以下,并在2017年年底下滑至7.7%左右。 微信DAU/MAU的比例也一直较为稳定,从2016年以来一直维持75%-80%左右的比例,用户的粘性极强,继续提升的空间并不大。因此,在整体用户数量开始触达天花板的时候,微信自身也在重新寻求新的增长点。 微信作为移动互联网的基础设施,已经成为流量枢纽,月活跃账户达到10.4亿,同增10.9%,是全国用户量最多的手机App。微信的活跃账户从2012年起步月活用户仅为5900万人左右,伴随中国移动互联网进程的不断推进,微信的活跃账户一直维持稳步增长,在2014-2017年年末分别达到5亿月活、6.97亿月活、8.89亿月活和9.89亿月活。 微信的用户数量增长已经开始呈现乏力趋势,这是因为微信自身也在重新寻求新的增长点。微信日活发展历程显示,微信的用户数量增长已经开始呈现乏力趋势。微信在2018年3月日活达到6.89亿人,同比增长5.5%,环比上个月增长1.7%。微信的日活同比增速下滑至20%以下,并在2017年年底下滑至7.7%左右。 微信DAU/MAU的比例也一直较为稳定,从2016年以来一直维持75%-80%左右的比例,用户的粘性极强,继续提升的空间并不大。因此,在整体用户数量开始触达天花板的时候,微信自身也在重新寻求新的增长点。 微信作为移动互联网的基础设施,已经成为流量枢纽,月活跃账户达到10.4亿,同增10.9%,是全国用户量最多的手机App。微信的活跃账户从2012年起步月活用户仅为5900万人左右,伴随中国移动互联网进程的不断推进,微信的活跃账户一直维持稳步增长,在2014-2017年年末分别达到5亿月活、6.97亿月活、8.89亿月活和9.89亿月活。 微信的用户数量增长已经开始呈现乏力趋势,这是因为微信自身也在重新寻求新的增长点。微信日活发展历程显示,微信的用户数量增长已经开始呈现乏力趋势。微信在2018年3月日活达到6.89亿人,同比增长5.5%,环比上个月增长1.7%。微信的日活同比增速下滑至20%以下,并在2017年年底下滑至7.7%左右。 微信DAU/MAU的比例也一直较为稳定,从2016年以来一直维持75%-80%左右的比例,用户的粘性极强,继续提升的空间并不大。因此,在整体用户数量开始触达天花板的时候,微信自身也在重新寻求新的增长点。