伙计我的应用程序使用相机拍照我使用以下代码拍照
public void takepic(View view) {
TextView schtitle = (TextView) findViewById(R.id.Sitename);
String schname = schtitle.getText().toString();
String[] tokens = schname.split(" ");
String timeStamp = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss").format(new Date());
String imageFileName = tokens[0] + "-" + timeStamp + ".jpg";
TextView myAwesomeTextView = (TextView)findViewById(R.id.filetext);
//in your OnCreate() method
myAwesomeTextView.setText(imageFileName);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String name = imageFileName;
File file = new File(path, name );
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
}
除了Nougat之外,其他所有方法都可以正常使用
我理解他们在棉花糖中所做的,你现在需要权限,不能再使用文件URI了
我找不到任何关于如何在牛轧糖中拍照的示例代码,有人可以指出我正确的方向,如何修改我的代码以允许这种情况发生?
任何帮助表示赞赏
标记
答案 0 :(得分:0)
问题是文件:// uri不再被授权。
而不是这个,你必须使用FileProvider。
答案 1 :(得分:0)
在此引用此内容作为参考。
我们现在有一个更新的文档,介绍如何使用文件uri将摄像头意图存储在android的训练部分下。
https://developer.android.com/training/camera/photobasics.html
答案 2 :(得分:0)
public void openShare(View view) {
// save bitmap to cache directory
try {
bitmap = ((BitmapDrawable) iv.getDrawable()).getBitmap();
File cachePath = new File(getCacheDir(), "images");
if (!cachePath.exists())
cachePath.mkdirs();
FileOutputStream stream = new FileOutputStream(cachePath + "/" + imageName);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.close();
shareImage();
} catch (Exception e) {
e.printStackTrace();
}
}
private void shareImage() {
File imagePath = new File(getCacheDir(), "images");
File newFile = new File(imagePath, imageName);
Uri contentUri = MyFileProvider.getUriForFile(this, "com.example.kushaalsingla.contentsharingdemo", newFile);
if (contentUri != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
shareIntent.setDataAndType(contentUri, getContentResolver().getType(contentUri));
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
startActivity(Intent.createChooser(shareIntent, "Choose an app"));
}
}
##################加入清单
<provider
android:name=".MyFileProvider"
android:authorities="com.example.kushaalsingla.contentsharingdemo"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
################## filepaths.xml ########################
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="shared_images" path="images/"/>
</paths>