java - 返回值应该是其他东西
问题描述
好的,所以我的项目应该检查应用程序是否已正确安装。它会检查语言、版本、应用程序是否已获得所需的所有权限等等。目前我在项目的许可部分遇到困难。
这个想法是正确的(或者至少另一个人这么说)但是我用“/这是问题行”标记的行没有返回正确的值。我将它连接到一个应用程序和所有这些东西,但它只返回-1,即使该权限确实存在于包中并且已启用。
也是脚本的一部分,或者至少是名称和数组以及所有不是英文的,如果需要我可以翻译它。我将非常感谢您的帮助!
public void berechtigungen(View view){
String[] berechtigungAbfrage = {
//A list of all the permissions
"Manifest.permission.ACCESS_FINE_LOCATION",
"Manifest.permission.ACCESS_COARSE_LOCATION",
"Manifest.permission.CALL_PHONE",
"Manifest.permission.CAMERA",
"Manifest.permission.PROCESS_OUTGOING_CALLS",
"Manifest.permission.READ_CALENDAR",
"Manifest.permission.READ_CALL_LOG",
"Manifest.permission.READ_CONTACTS",
"Manifest.permission.READ_EXTERNAL_STORAGE",
"Manifest.permission.READ_PHONE_STATE",
"Manifest.permission.READ_SMS",
"Manifest.permission.RECEIVE_MMS",
"Manifest.permission.RECEIVE_SMS",
"Manifest.permission.RECEIVE_WAP_PUSH",
"Manifest.permission.RECORD_AUDIO",
"Manifest.permission.SEND_SMS",
"Manifest.permission.USE_SIP",
"Manifest.permission.WRITE_CALENDAR",
"Manifest.permission.WRITE_CALL_LOG",
"Manifest.permission.WRITE_CONTACTS",
"Manifest.permission.WRITE_EXTERNAL_STORAGE",
};
String[] berechtigungCheck = {
//A list of all permissions which will get displayed in the target language
"Zugriff auf genaue Position",
"Zugriff auf grobe Position",
"Telefon",
"Kamera",
"Ausgehende Anrufe verarbeiten",
"Kalender lesen",
"Anrufliste lesen",
"Kontakte lesen",
"Externen Speicher lesen",
"Telefonstatus lesen",
"SMS lesen",
"MMS empfangen",
"SMS empfangen",
"Wap Push erhalten",
"Ton aufnehmen",
"SMS senden",
"Benutze einen Schluck",
"Kalender bearbeiten",
"Anrufliste bearbeiten",
"Kontakte bearbeiten",
"Externen Speicher bearbeiten",
};
for(int i = 0; i < 21; i++) {
PackageManager pm = getPackageManager();
int permissions = pm.checkPermission(berechtigungAbfrage[i],"I can't give the actuall package name but this should work for any app"); //this is is the problem line
//checks for the Permission i in the package
if (permissions == 0) {
//0 permission exists in this package
//-1 permission doesnt exist in this package
int antwort = checkSelfPermission(berechtigungAbfrage[i]); //checks
if (antwort == 0) {
//0 : the user has given permission
//-1 : the user hasn't given the permission
berechtigungCheck[i] = berechtigungCheck[i] + "Vorhanden";
} else {
berechtigungCheck[i] = berechtigungCheck[i] + "Nicht Vorhanden";
}
}
else{
berechtigungCheck[i] = berechtigungCheck[i] + " Nicht gebraucht";
//If the permission does not exist in the package the system simply says "is not needed"
}
}
new AlertDialog.Builder(this).setItems(berechtigungCheck,null).setTitle("Berechtigung").setPositiveButton("ok",null).show();
//All of this gets shown when a button is clicked
}
解决方案
我试图模拟相同的,但我也面临同样的问题。但是后来我尝试将权限修改为“android.permission.CAMERA”,然后它就起作用了。我在下面附上我的代码供您参考
String[] permissions = {"android.permission.ACCESS_FINE_LOCATION",
"android.permission.ACCESS_COARSE_LOCATION",
"android.permission.CALL_PHONE",
"android.permission.PROCESS_OUTGOING_CALLS",
"android.permission.READ_CALENDAR",
"android.permission.CAMERA"};
for(int iter = 0;iter < permissions.length;iter++){
PackageManager packageManager = getPackageManager();
int permInt = packageManager.checkPermission(permissions[iter],getApplicationContext().getPackageName());
...
}
推荐阅读
- amazon-web-services - aws cli - 如何仅查询 ec2 on demand 实例
- c++ - C++处理超级基本错误我应该怎么做?
- reactjs - 当tiltReverse 设置为{false} 时,react-parallax-tilt 包会干扰对子项的悬停效果
- reactjs - 如何将 MUI 手风琴的标题颜色更改为灰色?
- assembly - 设置 VMIN 和 VTIME Termios 程序集
- django - 提交表单后重定向到创建的对象
- autodesk-forge - 当用户运行 Forge 应用程序时收到通知
- javascript - 你如何传递一个包含道具的对象
- android - 如何使用 Strace 自动跟踪 Genymotion
- swagger - 如何使 Swagger UI 链接功能起作用?