我已经检查了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>
您是否在清单文件中添加了必要的权限?
测试此代码:
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
出于测试目的:
如果您使用的是android 6及更高版本,请转到设备上的应用管理器,然后转到权限并检查是否已启用read
和write
。
用于测试现实:
如果您使用的是Android 6及更高版本,则必须添加运行时权限,而不是手动进行操作。
更多详细信息here