我试图请求权限,它为registerForActivityResult抛出了一种未知的方法,起初我使用的是普通android.app.Activity,因为目前由于缺少PC,我一直在使用AIDE,我以前也遇到过与AppCompatActivity有关的问题,但我注意到registerForActivityResult()方法属于ActivityResultCaller,它不是由活动实现,而是由AppCompatActivity实现的,所以我将主要活动切换到扩展AppCompatActivity,在改变了大量导入和依赖关系的过程中,它无法工作,我也试着实现ActivityResultCaller,但是那个错误消失了,一切都符合,但是它说我没有实现抽象方法registerForActivityResult,现在它周围没有红线或错误,所以我回到了不实现它并试图让它与普通appcompatactivity一起工作的问题,因为在我看到的所有教程中,它们都不需要声明MainActivity实现ActivityResultCaller,所以我更多地处理依赖关系,在这一点上,我没有真正记住我做过的所有事情,所以,我现在可能有一些没有必要的代码,我已经删除了大部分代码以使其更简单,但这就是我现在的位置,有什么建议吗?
package com.mycompany.MyApp;
import android.app.*;
import android.os.*;
import android.view.Window;
import android.view.WindowManager;
import android.support.v4.content.*;
import android.content.Context;
import androidx.activity.result.*;
import android.provider.*;
import androidx.core.app.*;
import android.content.Intent;
import android.net.Uri;
import android.content.pm.*;
import androidx.activity.result.contract.*;
import androidx.activity.*;
import android.provider.*;
import java.security.*;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.*;
public class MainActivity extends AppCompatActivity{
String[] permissions = {android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE};
public static MainActivity instance;
public ActivityResultLauncher<Intent> activityResultLauncher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
activityResultLauncher =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>(){
@Override
public void onActivityResult(ActivityResult result){
}
});
setContentView( new Game(this));
}
}这是build.gradle文件
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.mycompany.MyApp"
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation "androidx.activity:activity:1.4.0"
implementation "androidx.activity:activity:1.2.0-rc01"
compile fileTree(dir: 'libs', include: ['*.jar'])
Implementation "com.android.support:support-v4:23.+"
Implementation "com.android.support:appcompat-v7:22.1.0"
}发布于 2022-01-09 07:02:05
正如注释中所建议的那样,您使用的代码(包括依赖项)是旧的。查看已取代支持库的androidx。“编译”也被反对为“实现”,尽管如此,我已经包含了用结果活动API请求权限的示例代码。
检查对Android 6或更高版本是否授予权限。
if (Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(requireContext(), permissions) != PackageManager.PERMISSION_GRANTED) {
//permissions is a string array for multiple permission else single permission
getPermission.launch(permissions);
}
}一个权限的活动结果API
private final ActivityResultLauncher<String> getPermission =
registerForActivityResult(new ActivityResultContracts.RequestPermission(), new ActivityResultCallback<Boolean>() {
@Override
public void onActivityResult(Boolean isGranted) {
if (isGranted) {
//PERMISSION GRANTED DO SOMETHING
} else {
//EXPLAIN TO USER WHY PERMISSION ARE NECESSARY FOR FUNCTINALITY
}
}
});对于多个权限
private final ActivityResultLauncher<String[]> locationPermissions =
registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), result -> {
if (result.containsValue(false)) {
//one of the permissions is not granted, use result[0] to get result for individual permissions
} else {
//all permissions granted do something
}
});最新稳定活动依赖性
implementation 'androidx.activity:activity:1.4.0'为了碎片
implementation 'androidx.fragment:fragment:1.4.0'发布于 2022-10-01 04:27:59
你能用这个方法代替ActivityResualtContract.RequestPermission吗..。清理项目并重新构建项目,然后尝试以下方法
ActivityResultLauncher<String> storagePermissionLauncher = registerForActivityResult(new ActivityResultCallback<String> () {
/**
* Called when result is available
*
* @param result
*/
@Override
public void onActivityResult(String result) {
}
});https://stackoverflow.com/questions/70638626
复制相似问题