Я только начал работать с кодом, потому что я хочу продолжить обучение в этом направлении.Я решил использовать Kotlin и Android, чтобы использовать свои разработанные программы.Предыстория: в настоящее время я работаю над приложением, которое я мог бы использовать в своей повседневной жизни в качестве помощника по обслуживанию.Это должно позволить мне сфотографировать сломанную деталь и ввести короткий текст.Затем он должен перечислить изображения и связанную информацию в обзоре, чтобы я мог заказать запасные части позже.Я был в состоянии сделать снимки, и приложение показало миниатюру этих снимков.Но мне нужно сохранить их в каком-то каталоге, чтобы использовать их позже для моей информации и списка запасных частей.Я использовал руководство на сайте разработчика Android.Я должен настроить файл-провайдер в манифесте, но Android Studio не может справиться с моим дурацким кодированием: D.У вас есть предложения, где я ошибся?Я отмечаю проблемы с "#####". Есть ли возможность просто вставить некоторые картинки кода здесь, кроме использования imgur?Я очень ценю вашу поддержку!
Первая проблема в строке 6 - внешний путь подчеркнут красным, говоря, что в атрибуте отсутствует префикс пространства имен Android.Другие 2 проблемы находятся в разделе провайдера.В Android: name = "Android.support.v4.CONTENT (" red "). FILEPROVIDER (" red ") - говоря, что неразрешенный класс.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.passungenundco">
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name ="my_images" path = "Android/data/com.example.passungenundco/files/Pictures"/>
</paths>
<uses-feature android:name="android.hardware.camera2"
android:required="true"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application>
<provider
android:authorities="com.example.android.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/file_paths"></meta-data>
</provider>
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".NeueBestellung"></activity>
<activity android:name=".Bestellungen" />
<activity android:name=".Gewinde" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Вот действие:
package com.example.passungenundco
import android.app.Activity
import android.content.ContentValues
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.widget.Toast
import androidx.core.app.ActivityCompat.requestPermissions
import androidx.core.content.FileProvider
import kotlinx.android.synthetic.main.activity_neue_bestellung.*
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.*
import java.util.jar.Manifest
class NeueBestellung : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_neue_bestellung)
buCam.setOnClickListener {
takepicture()
}
}
val REQUEST_IMAGE_CAPTURE = 1
private fun takepicture() {
Intent(MediaStore.ACTION_IMAGE_CAPTURE).also{intentCamShot ->
intentCamShot.resolveActivity(packageManager)?.also {
val photoFile: File? = try {
createImageFile()
} catch (ex:IOException){
null
}
photoFile?.also{
val photoURI: Uri = FileProvider.getUriForFile (this, "com.example.android.fileprovider", it)
intentCamShot.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
startActivityForResult(intentCamShot, REQUEST_IMAGE_CAPTURE)
}
//startActivityForResult(intentCamShot,REQUEST_IMAGE_CAPTURE)
}
}
}
@Throws(IOException::class)
private fun createImageFile(): File {
var currentPhotoPath: String
val timeStamp:String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
### get ExternalFilesDir помечен красным: Обязательный файл, Найденный файл? - кажется, что-то не так с объявлением?
val storageDir:File = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
return File.createTempFile(
"JPEG_${timeStamp}_",
".jpg",
storageDir
).apply {
currentPhotoPath = absolutePath
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
val imageBitmap = data?.extras?.get("data") as Bitmap
ivCam.setImageBitmap(imageBitmap)
}
}
}