为什么onActivityResult没有被调用?

问题描述 投票:0回答:2

我已经检查了here中提到的解决方案,但是我的应用没有大多数设置,包括清单1。我可以尝试改变的那些,我做到了。还是没有运气。

下面是我的代码,这是TabHost中我的一个标签之一。我可以从图库中选择图像,但是此后的任何语句都不会执行。没有输出sysout语句。

除Button以外,我所有的变量都是静态的。可能有问题吗?

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_message);

        int permission = ActivityCompat.checkSelfPermission(messageActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    messageActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    101
            );
        }
        databaseRef = FirebaseDatabase.getInstance().getReference();
        imgStorageRef = FirebaseStorage.getInstance().getReference();
        imgRef = databaseRef.child("images");
        user = MainActivity.sendUser();
        et = findViewById(R.id.msg);
        et.setText("");
        send = findViewById(R.id.sendBtn);
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                startActivityForResult(gallery, PICK_IMAGE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        System.out.println("Entered onActivityResult");
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == PICK_IMAGE){
            imageUri = data.getData();
            try {
                bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
                bmp=bmp.copy(Bitmap.Config.ARGB_8888 , true);
                encode();
                System.out.println("Encoded");
                upload();
                System.out.println("Uploaded");
                /*Code continues...*/

            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

这是清单文件:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <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">
        <activity android:name=".messageActivity"/>
        <activity android:name=".chatActivity" />
        <activity android:name=".usersActivity" />
        <activity android:name=".afterRegister" />
        <activity android:name=".activityTwo" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
android firebase
2个回答
0
投票

您是否在清单文件中添加了必要的权限?


0
投票

测试此代码:

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, PICK_IMAGE);

特别是这个:

MediaStore.Images.Media.EXTERNAL_CONTENT_URI

0
投票

出于测试目的:

如果您使用的是android 6及更高版本,请转到设备上的应用管理器,然后转到权限并检查是否已启用readwrite

用于测试现实:

如果您使用的是Android 6及更高版本,则必须添加运行时权限,而不是手动进行操作。

更多详细信息here

© www.soinside.com 2019 - 2024. All rights reserved.