Я пишу приложение, которое отправляет изображения по электронной почте, но почему-то я получаю эту ошибку.Может кто-нибудь подскажет, что я не так сделал?
Я получил все разрешения (камера, запись на внешнее хранилище) и тоже отправил действие.Я установил file_path xml и в манифесте провайдера также.Если я попробую только с миниатюрой, то это сработает, а с целым файлом - нет.Вот мой метод onClick, файл манифеста и файл path.xml
Метод onClick
public void onCameraButtonClick(View view) {
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
Toast.makeText(this, "External storage nicht vefrügbar",Toast.LENGTH_LONG).show();
return;
}
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(getPackageManager()) != null) {
File imageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = new File(imageDir, "picture.jpg");
Log.d(getClass().getSimpleName(), "Dateipfad = " + imageFile.getAbsolutePath());
Uri imageUri = FileProvider.getUriForFile(this, "implizitintents.fileprovider", imageFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
} else {
Toast.makeText(this, "Keine passende Anwendung installiert", Toast.LENGTH_LONG).show();
}
}
Файл манифеста
<application
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">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="implizitintents.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths">
</meta-data>
</provider>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
path.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="my_images"
path="Android/data/com.example.implizitintents/files/Pictures/picture.jpg"/>
</paths>
Файл макета:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Implizite Intents!" />
<EditText
android:id="@+id/telNr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:textSize="10dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonCallClick"
android:src="@android:drawable/ic_menu_call" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCameraButtonClick"
android:src="@android:drawable/ic_menu_camera" />
</LinearLayout>
<ImageView
android:id="@+id/imageView_thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email Adresse:" />
<EditText
android:id="@+id/emailAdresseText"
android:layout_width="match_parent"
android:layout_height="45dp"
android:inputType="textEmailAddress" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject:" />
<EditText
android:id="@+id/mailSubject"
android:layout_width="match_parent"
android:layout_height="45dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Inhalt: " />
<EditText
android:id="@+id/mailInhalt"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@drawable/mailborder"
android:scrollbars="vertical"
android:inputType="textMultiLine"
android:gravity="top|left"
android:paddingLeft="2dp"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMailButtonClick"
android:src="@android:drawable/ic_dialog_email" />
</LinearLayout>
</ScrollView>
и вот сообщение об ошибке:
2019-05-02 10:49:26.765 11166-11166/com.example.implizitintents E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.implizitintents, PID: 11166
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.StringIndexOutOfBoundsException: length=87; index=88
at java.lang.String.substring(String.java:1939)
at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:748)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:418)
at com.example.implizitintents.MainActivity.onCameraButtonClick(MainActivity.java:66)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)