2017-01-06 16 views
0

My Xamarin Androidアプリがギャラリーをポップアップして、既存の写真を選択できるようにする必要があります。選択された画像のXamarin Androidアプリがクラッシュする "Intentにアンドロイドアプリを作成するための明示的なパッケージ名を含める必要があります"

私のテストユーザーのonが所有するGalaxy S5では、毎回クラッシュしています。それは私の安い/古いHuaweiのテスト電話でうまく動作します。

私はAzure Mobile Centerを使用してクラッシュレポートを作成していますが、これはエラーログに表示されています。 テント{DAT =コンテンツ://私も、このエラーは、Visual Studio内から直接投げ参照ギャラクシーS5から住んでデバッグするときは...

意図は、Androidアプリを構築するために、明示的なパッケージ名を含める必要がありますメディア/外部/画像/メディア/ 4238 FLG = 0x1の VirtualScreenParam = PARAMS {mDisplayId = -1、NULL、MFLAGS = 0x00000000の)} (補足を有する)}

これは私が作成していな方法でありますギャラリーからの選択の意図:

public void HandleRecord(object sender, EventArgs ea) 
    { 
     ... 
       //Choose from gallery 
       else if (args.Which == 1) 
       { 
        var intent = new Intent(Intent.ActionPick); 
        intent.SetType("image/*"); 
        this.StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), SELECT_FILE); 
       } 
     } 
    } 

コードは私のOnActivityResult方法では、この正確なライン上でクラッシュし...

if (requestCode == SELECT_FILE) 
      { 
       ImageUri = Android.Net.Uri.Parse(data.ToUri(IntentUriType.AndroidAppScheme)); 
+0

どのAPIのバージョンがクラッシュしていますか?彼らはすべて同じですか? (API 21?) – SushiHangover

+0

Azure Mobile Centerで見ることができるのは、メインデバイスが「SM-G930F」(Galaxy S7?)なので、それは本当に新しいバージョン23ですか? – Aaron

+0

写真を撮ったり写真を選択した後にアプリがクラッシュするまた、アプリのクラッシュ時に同じエラーが発生していますか? –

答えて

0

善良私のああ、それを発見しました。 APIで23+私は「ギャラリーから画像を選択」オプションの意図を宣言するときにこのコード行を追加する必要がありました:

intent.SetPackage("com.android.gallery"); 

ので、全体的なコードになった:

    var intent = new Intent(Intent.ActionGetContent); 
        intent.SetType("image/*"); 
        intent.SetPackage("com.android.gallery"); 
        this.StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), SELECT_FILE); 

I'LLなぜ私はIntent.ActionPick型を宣言した後にこれを行う必要があるのか​​理解できませんが、うまくいき、エラーはもはやスローされません。

+0

その後、このコードを古いKitKatデバイスで実行すると、パーミッションエラーが発生しました。 Intent.ActionPickが代わりにIntent.ActionGetContentでなければならないようになりました - 権限の問題が解決され、元の問題が解決されました! – Aaron

関連する問題