看到网上一个demo,贴来求教一下:public class MainActivity extends AppCompatActivity {    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File file = new File(Environment.getExternalStorageDirectory(), "aaa.jpg");
                Uri imgUri =  Uri.fromFile(file);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
                startActivity(intent);
            }
        });
    }
}布局就一个按钮,不贴了
manifest添加拍照和写文件权限,跑起来,然后问题来了,手机6.0的,没有动态申请权限,居然麻溜地打开了相机还把照片存下来了,想请问大神这是什么黑科技

解决方案 »

  1.   

    因为是使用的 intent 调用的系统相机,所以你的应用本身不需要相机权限
      

  2.   

    我利用你提供的代码,并按照你的描述简单写了个Demo APP图一:确认安装提示,这里会提示当前APP所需要的权限图二:安装成功提示,你会看到这里有个主要权限的说明。点开它,你会发现这里的调用摄像头权限是默认勾选上的,所以没有了动态申请权限的提示。你可以尝试取消勾选,那就没法正常的拍照了
      

  3.   

    我记得好像是6.0 还是7.0 以后  
         File file = new File(Environment.getExternalStorageDirectory(), "aaa.jpg");
    这个代码 访问 文件 是需要 配置的
    1:
    res目录下 添加一个xml 文件夹     在增加一个文件 test.xml 名字无所谓 
    2:复制下面代码
    <?xml version="1.0" encoding="utf-8"?>
    <paths>
        <external-path path="Android/data/你的包名/" name="files_root" />
        <external-path path="." name="external_storage_root" />
        <external-path  path="psyphoto/" name="images"/>
    </paths>3:AndroidManifest增加
    <provider
        android:authorities="com.example.jin.fileprovidertest.fileprovider"
        android:name="android.support.v4.content.FileProvider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/test"/>
    </provider>
    在试试你的代码 
      

  4.   

    打开权限管理,需要动态申请权限的那些,都是3个选项,允许,提示,不允许,3楼说的就是已经勾选了允许权限的情况,这时候是不需要我们动态申请的,但问题是,官方都明确要求读写文件,访问相机是需要动态申请权限的,这个demo是如何做到默认就让用户允许了全部权限,而事实上系统默认的是提示。如果可以这么做,那我每一种权限都设置成这样,就不需要理会官方的动态申请权限了
      

  5.   

    如果在build文件里面对targetSdkVersion配置是23以下,那么就不会有动态权限申请,采用的是原先的机制。
      

  6.   

    楼上正解,android7.0才需要动态申请