仿抖音短视频系统源码,实现获取系统图片的相关代码如下: 首先开权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />但是实际上还需要动态申请权限
package com.example.mediaeidaprovierdemo; import android.Manifest; import android.content.ContentResolver; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.RemoteException; import android.provider.MediaStore; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.Toast; import static android.content.pm.PackageManager.PERMISSION_GRANTED; public class MainActivity extends AppCompatActivity { private ContentResolver mProvider; private static final int NOT_NOTICE = 2;//如果勾选了不再询问 private AlertDialog alertDialog; private AlertDialog mDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myRequetPermission(); } private void myRequetPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { run(); Toast.makeText(this, "您已经申请了权限!", Toast.LENGTH_SHORT).show(); } } private void run() { ImageView imageView = findViewById(R.id.iv_main_show); String filePath; mProvider = getContentResolver(); Cursor cursor = mProvider.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.Media.DATA}, null, null, null, null); int columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); if (cursor.moveToFirst()) { filePath = cursor.getString(columnIndex); Bitmap bitmap = BitmapFactory.decodeFile(filePath); imageView.setImageBitmap(bitmap); } cursor.close(); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == NOT_NOTICE) { myRequetPermission();//由于不知道是否选择了允许所以需要再次判断 } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1) { for (int i = 0; i < permissions.length; i++) { if (grantResults[i] == PERMISSION_GRANTED) {//选择了“始终允许” run(); Toast.makeText(this, "" + "权限" + permissions[i] + "申请成功", Toast.LENGTH_SHORT).show(); } else { if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {//用户选择了禁止不再询问 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("permission") .setMessage("点击允许才可以使用我们的app哦") .setPositiveButton("去允许", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { if (mDialog != null && mDialog.isShowing()) { mDialog.dismiss(); } Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null);//注意就是"package",不用改成自己的包名 intent.setData(uri); startActivityForResult(intent, NOT_NOTICE); } }); mDialog = builder.create(); mDialog.setCanceledOnTouchOutside(false); mDialog.show(); } else {//选择禁止 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("permission") .setMessage("点击允许才可以使用我们的app哦") .setPositiveButton("去允许", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { if (alertDialog != null && alertDialog.isShowing()) { alertDialog.dismiss(); } ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } }); alertDialog = builder.create(); alertDialog.setCanceledOnTouchOutside(false); alertDialog.show(); } } } } } }以上就是仿抖音短视频系统源码,获取系统图片的相关代码,更多内容欢迎关注之后的文章 本文转载自网络,转载仅为分享干货知识,如有侵权欢迎联系云豹科技进行删除处理