java-如何授予应用程序清单权限?如何在Android上以编程方式进行操作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何授予应用程序清单权限?如何在Android上以编程方式进行操作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3632字,纯文字阅读大概需要6分钟。
内容图文
![java-如何授予应用程序清单权限?如何在Android上以编程方式进行操作?](/upload/InfoBanner/zyjiaocheng/650/91cbf12db6864f5b8bd5ced798dd5edf.jpg)
我用这个Topic
我尝试此代码,但没有用:
PACKAGE_NAME = context.getApplicationContext().getPackageName();
try {
pi = context.getPackageManager().getPackageInfo(PACKAGE_NAME, PackageManager.GET_PERMISSIONS);
for (String perm : pi.requestedPermissions) {
Log.e("Foo", perm);
}
} catch (Exception e) {
}
但这不能帮助我.我有应用程序列表,我想获得在每个应用程序上使用的权限.
我该如何处理?
更新:
就像照片一样,当我单击“????????”时,我想获得该应用程序中使用的权限.(例如,电报中:Internet,存储,通话,摄像头…)
更新2:
我将分享我的问题的适配器代码
我的适配器:
class AppViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
AppViewHolder(View itemView, Context context, List<App> apps) {
super(itemView);
txt_show_permission = itemView.findViewById(R.id.txt_show_permission);
/*The String Buffer For Permissions*/
appNameAndPermissions = new StringBuffer();
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo applicationInfo : packages) {
Log.d(TAG, "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);
PackageInfo packageInfo = null;
try {
packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
appNameAndPermissions.append(packageInfo.packageName + "*******:\n");
//Get Permissions
requestedPermissions = packageInfo.requestedPermissions;
if (requestedPermissions != null) {
for (int i = 0; i < requestedPermissions.length; i++) {
Log.d(TAG, requestedPermissions[i]);
appNameAndPermissions.append(requestedPermissions[i] + "\n");
}
appNameAndPermissions.append("\n");
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
在onBindViewHolder中的txt_show_permission上设置点击监听器:
holder.txt_show_permission.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(String.valueOf(appNameAndPermissions));
}
});
适配器类中对话框的方法:
public void showDialog(String txtPermission) {
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
dialog.setContentView(R.layout.show_permission_dialog);
TextView txt_permission = dialog.findViewById(R.id.txt_permission);
Button btn_ok = dialog.findViewById(R.id.btn_ok);
txt_permission.setText(txtPermission);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
解决方法:
>您可以遍历所有应用程序名称并获取它们的权限,并将其存储在字符串缓冲区中,如下所示:
https://stackoverflow.com/a/14672557/10058326
>或者因为您希望在单击按钮时显示权限,所以可以在OnButtonClickListener中为每个应用添加使用正确的应用名称尝试过的代码
>或者您也可以从每次单击按钮时从先前获得的StringBuffer中提取相关权限
编辑:有关如何为Recycler View创建OnItemClickListener的信息,请参见这些链接.您可以获取被单击的行的位置,并通过该行获取该行中的应用名称,然后将其传递给另一个函数.然后在该函数中编写代码以获取传递的应用名称的权限并显示它
https://antonioleiva.com/recyclerview-listener/
https://gist.github.com/riyazMuhammad/1c7b1f9fa3065aa5a46f
编辑2:
无需将appNameAndPermissions传递给包含整个列表的showDialog,而是需要从字符串缓冲区中提取某个应用程序的权限.这是如何做:
String app_name = itemView.findViewById(R.id.app_name_text_view).getText().toString();
int indexOfApp = appNameAndPermissions.indexOf(app_name);
int indexOfLastPermission = appNameAndPermissions.indexOf("\n", indexOfApp);
String permissions = appNameAndPermissions.substring(indexOfApp, indexOfLastPermission);
内容总结
以上是互联网集市为您收集整理的java-如何授予应用程序清单权限?如何在Android上以编程方式进行操作?全部内容,希望文章能够帮你解决java-如何授予应用程序清单权限?如何在Android上以编程方式进行操作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。