質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.77%

AndroidアプリでSNSに画像をシェアしたいのですが上手くいきません。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,179

Aka.H

score 6

前提・実現したいこと

Unity(C#)でアプリゲームを製作しています。

AndroidでSNSに画像をシェアしたいのですが上手くいきませんでした。
スクショを撮ること、SocialConnectorを使ってSNSでシェアすることはそれぞれできているのですが組み合わせるとシェアウィンドウ?(LINEやTwitterのアイコン)が出てきません。

ビルドして実機でのテスト中に出るエラー的にandroid.support.v4が見つからないのだと思うので、どこにあるかご存じの方、もしくはない場合インストール?できる方法をご存じの方教えていただきたいです。
よろしくお願いします。 

発生している問題・エラーメッセージ

AndroidJavaException: java.lang.ClassNotFoundException: android.support.v4.content.FileProvider
java.lang.ClassNotFoundException: android.support.v4.content.FileProvider

試したこと

調べてみたのですがandroid.support.v4というものがどこにも見当たりませんでした。
いろいろ探してみて似た名前でヒットしたのは
AppDate/Local/Android/Sdk/extras/android/m2repository/com/android/support/support-v4/26.0.0-alpha1/support-v4-26.0.0-alpha1-sources
だったのですがこれをPlugins/Androidの中に試しに入れてみても同じくエラーが出たのでこれではないのかな?と思っています。

補足情報(FW/ツールのバージョンなど)

Unity 2018.3.12f1
AndroidStudio 3.4.2
Android 8.0.0
SocialConnector

追記

AndroidManifest.xml

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.Company.Tamago.fileprovider"
android:exported="false"
android:grantUriPermissions="true">


build.gradle

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
}
}

allprojects {
    repositories {
        google()
        jcenter()
        flatDir {
            dirs 'libs'
        }
        maven {
        url "https://maven.google.com"
        }
    }
}

// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each {
    ext {
        it.setProperty("android.useAndroidX", true)
        it.setProperty("android.enableJetifier", true)
    }
}
([rootProject] + (rootProject.subprojects as List)).each { project ->
    project.repositories {
        def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
        maven {
            url "https://maven.google.com"
        }
        maven {
            url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
        }
        mavenLocal()
        jcenter()
        mavenCentral()
    }
}
// Android Resolver Repos End
apply plugin: 'com.android.application'


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:27.0.2'
// Android Resolver Dependencies Start
    implementation 'com.google.android.gms:play-services-ads:18.1.1' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
    implementation(name: 'support-v4-26.0.0-alpha1', ext:'aar')
    implementation(name: 'unity-ads', ext:'aar')
    implementation project(':GoogleMobileAdsPlugin')
}

// Android Resolver Exclusions Start
android {
  packagingOptions {
      exclude ('/lib/arm64-v8a/*' + '*')
      exclude ('/lib/armeabi/*' + '*')
      exclude ('/lib/mips/*' + '*')
      exclude ('/lib/mips64/*' + '*')
      exclude ('/lib/x86_64/*' + '*')
  }
}
// Android Resolver Exclusions End
android {
    compileSdkVersion 29
    buildToolsVersion '29.0.1'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 29
        applicationId 'com.Company.Tamago'
        ndk {
            abiFilters 'armeabi-v7a', 'x86'
        }
        versionCode 1
        versionName '0.1'
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = ['.unity3d', '.ress', '.resource', '.obb']
    }

    buildTypes {
        debug {
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
            jniDebuggable true
        }
        release {
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
            signingConfig signingConfigs.debug
        }
    }

    packagingOptions {
        doNotStrip '*/armeabi-v7a/*.so'
        doNotStrip '*/x86/*.so'
    }

    bundle {
        language {
            enableSplit = false
        }
        density {
            enableSplit = false
        }
        abi {
            enableSplit = true
        }
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2019/08/31 15:49 編集

    参考にしたサイトとかありますか?
    あと、何かそれをしている動画などを載せてもらえると・・・助かります。(私も初心者中の初心者なので力不足になるかもしれませんが・・・その時はすみません。)

    キャンセル

  • Aka.H

    2019/08/31 16:35

    色々なサイトを参考にしているので特にこれというのは…。
    動画というのはどういうことですか?アプリのプレイ中のということならばシェア用のボタンを押しても何も起きないというだけなので動画にするようなことはないのですが。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2019/08/31 16:37

    サイトは色々なものを参考にしているんですね。わかりました。
    動画の件はわかりました。というか、変なことを言ってしまいすみませんでした。m(_ _)m

    キャンセル

回答 2

0

Unityのsupport-v4の組み込みであれば、先日同じ質問がありましたので、参考にしてみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/31 14:00

    そちらの方法で入手はできたものはsupport-v4-26.0.0-alpha1-sourcesだったのですが結局解決しませんでした。
    何が原因なのかアドバイス等ありましたらいただきたいです。

    キャンセル

  • 2019/08/31 14:49

    「build.gradle」に記述してあるので問題はないと思いますが、念の為、「そちらの方法で入手はできたものは」というのは、具体的にどのように確認しましたか。

    もっとも、先に言ったとおり依存関係の設定は問題なさそうなので、FileProviderやSocialConnector絡みの問題のような気もします。
    そちらは使ったことがないので、よく知りません。

    キャンセル

  • 2019/08/31 16:40

    上記で紹介していただいたリンク先のようにmainTemplate.gradleで自動的に追加されたものがsupport-v4-26.0.0-alpha1-sourcesでした。
    (ビルドしたらAndroidフォルダ内に追加されていたのでこれだと思っています)

    キャンセル

checkベストアンサー

-1

SocialConnectorプラグインのSocialConnector.csに以下の記述があります。

if(24 <= apiLevel) {
  var context = activity.Call<AndroidJavaObject> ("getApplicationContext");
  var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
  var file = new AndroidJavaObject ("java.io.File", textureUrl);
  uri = fileProvider.CallStatic<AndroidJavaObject>("getUriForFile", context, Application.identifier + ".fileprovider", file);
} 

注目すべき点は、ファイルプロバイダにandroid.support.v4.content.FileProviderが指定されていることです。android.support.v4.content.FileProviderを使用できるようにする必要があります。

AndroidManifest.xmlのファイルプロバイダにandroid.support.v4.content.FileProviderが指定されていることを確認します。

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.Company.Tamago.fileprovider"
android:exported="false"
android:grantUriPermissions="true">

gradle.propertiesに以下のプロパティがある場合、

android.useAndroidX=false
android.enableJetifier=false


に変更し、build.gradle(Module: app)のdependencies内に

implementation 'com.android.support:support-compat:28.0.0'


を追記します。

[File]>[Sync Project with Gradle Files]し、[Build]>[Rebuild Project]します。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/01 14:55

    返信遅くなりすみません
    Android Studioの方でsupport-v4のバージョンも28に設定したのですが同じくエラーでした。
    support-v4-26.0.0-alpha1-sources.jarこれを28.0.0の物にしないといけないということでしょうか?

    キャンセル

  • 2019/09/01 16:39

    バージョン26のjarファイルは、変に競合する可能性があるので、そもそも入れない方が良いと思います。

    また、動作しない原因を調べてみましたが、androidx.*のクラスを無効にするために、gradle.propertiesのandroid.useAndroidXとandroid.enableJetifierをfalseにする必要がありそうです。試してみてください。gradle.propertiesの変更後は忘れずにSyncしてください。

    キャンセル

  • 2019/09/01 16:51

    すみませんプログラム初心者で手探りでやっているため、もう少しだけかみ砕いて教えていただきたいです。。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る