Неразрешенные или отсутствующие атрибуты в манифесте, кто-нибудь может дать мне подсказку? - PullRequest
0 голосов
/ 29 сентября 2019

Я только начал работать с кодом, потому что я хочу продолжить обучение в этом направлении.Я решил использовать 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)
            }
        }


    }
...