我正在更新我们的应用程序以使用新的M权限系统.除了onRequestPermissionsResult()之外,它都在工作.我需要在按下按钮时检查权限,如果成功,则发送短信.当我授予这样做的权限时,对话框会关闭,但在我再次按下按钮之前它不会触发发送文本.
我已经在onRequestPermissionsResult()方法中调试并设置了断点,但它从未进入过它.
首先调用此方法:
private void askForPermission() {
String[] permissions = new String[]{Manifest.permission.SEND_SMS};
ActivityCompat.requestPermissions(getActivity(), permissions, PERMISSIONS_CODE);
}
Run Code Online (Sandbox Code Playgroud)
然后我的回调看起来像这样:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSIONS_CODE) {
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
int grantResult = grantResults[i];
if (permission.equals(Manifest.permission.SEND_SMS)) {
if (grantResult == PackageManager.PERMISSION_GRANTED) {
onPPSButtonPress();
} else {
requestPermissions(new String[]{Manifest.permission.SEND_SMS}, PERMISSIONS_CODE);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过类似的问题?感谢任何帮助.谢谢
在Lollipop中,下载功能在我的应用程序中运行良好,但是当我升级到Marshmallow时,我的应用程序崩溃并在我尝试从互联网下载到SD卡时出现此错误:
Neither user nor current process has android.permission.WRITE_EXTERNAL_STORAGE
Run Code Online (Sandbox Code Playgroud)
它抱怨这行代码:
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)
我在应用程序外的清单中拥有权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
我清理并重建了项目,但它仍然崩溃.
Facebook,Evernote,Pocket - 所有应用程序都会自动在Android 6.0上获得此权限,即使它们的目标是23(targetSdkVersion=23).
关于新的Marshmallow权限模型有很多文档.其中一个SYSTEM_ALERT_WINDOW被"提升"为"高于危险"的权限级别,因此需要特殊的用户干预才能授予应用程序这些权限.如果应用程序有targetSdkVersion22或更低,app会自动获得此权限(如果在清单中请求).
但是,我注意到一些获得此权限的应用程序,无需将用户发送到设置特殊页面的Draw over other apps权限.我看到Facebook,Evernote,Pocket - 也许还有更多.
任何人都知道在没有用户通过的情况下如何授予应用程序此权限Settings -> Apps -> Draw over other apps?
谢谢
android android-permissions target-sdk system-alert-window android-6.0-marshmallow
假设我在运行时请求权限,如下所示:
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
Run Code Online (Sandbox Code Playgroud)
Android系统会创建一个弹出对话框来请求权限.如何为该对话框定义自定义布局?
我有一个应用程序,需要找到用户位置,并在各个类中提取位置,所以我写了一个单独的类(非活动类),使用位置服务获取用户位置,它在Android M下工作正常,但需要运行Android M中的时间权限,我想检查我的Location类中的权限,我知道如何检查它们但我不能在我的Location类中使用onRequestPermissionsResult方法,因为我的Location类不会从任何活动扩展.
那么我应该做些什么呢?任何帮助/线索表示感谢提前感谢
我正在尝试在我的android模拟器上创建一个目录但是我不能这样做,我已经拥有了manifest write_storage的权限,并且我没有得到任何错误,但mkdir()返回false,我验证外部存储是否也可写它是,它在物理设备上工作我的代码:
/// Cria uma nova pasta para colocar o backup
File direct = new File(Environment.getExternalStorageDirectory(),
"/Financas RW Backup");
try {
if (!direct.exists()) {
if(isExternalStorageWritable()&&isExternalStorageReadable()) {
if( direct.mkdir()) {
fachada.showMessage(ExportImportDB.this," Criado");
}else{
fachada.showMessage(ExportImportDB.this," Não Criado");
}
}
}
} catch (Exception e) {
fachada.showMessage(this, e.toString());
}
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我将一些文件保存到Environment.getExternalStorageDirectory() + "\MyApp"目录.这工作正常,直到android 6 marshmallow更新.棉花糖更新后,我无法写入此目录.
如本回答所述,在棉花糖中,应用程序需要在写入外部存储之前在运行时请求用户的许可.
但是,当我使用context.getExternalFilesDir(null)而不是Environment.getExternalStorageDirectory(),我不需要在运行时请求任何权限,它只是工作(返回的路径context.getExternalFilesDir(null)也在外部存储目录内).
这有点巧合还是我可以在context.getExternalFilesDir(null)没有得到运行许可的情况下继续写入?
以下是导入和导出SQLite数据库的工作方法。在除Android Pie外的所有android版本中,其工作情况都很好。当我尝试导入Android Pie时,它显示成功的Toast,但未还原数据库。谁能帮我解决Android Pie(API 28)问题。
private void importDB() {
try {
File sd = Environment.getExternalStorageDirectory();
File cur_db_pat = new File(this.getDatabasePath(DATABASE_NAME).getAbsolutePath());
if (sd.canWrite()) {
String backupDBPath = bac_dir_nam +"/" + DATABASE_NAME;
File currentDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(cur_db_pat).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getBaseContext(), cur_db_pat.toString(),
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();
}
}
private void exportDB() {
try {
File sd = Environment.getExternalStorageDirectory();
File cur_db_pat = new …Run Code Online (Sandbox Code Playgroud) 我在尝试使用改造将图像上传到服务器时遇到以下错误,api 接收标头授权令牌,_method = "put" 和 image = "imageName.jpg" 作为参数,其他所有内容都是可选的,任何帮助将不胜感激。
java.io.FileNotFoundException:/storage/emulated/0/Download/space-wallpaper-21.jpg:打开失败:EACCES(权限被拒绝)
userImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
galleryIntent.setType("*/*");
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) {
// Get the Image from data
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
// Get the cursor
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android中的异步任务下载和存储图像,当单击下载按钮获取以下错误.
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/downloadedfilem.jpg (Permission denied)
12-07 11:01:00.120 28478-28540/myoracle.com.quotes W/System.err: at java.io.FileOutputStream.open(Native Method)
12-07 11:01:00.120 28478-28540/myoracle.com.quotes W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
12-07 11:01:00.120 28478-28540/myoracle.com.quotes W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:108)
12-07 11:01:00.120 28478-28540/myoracle.com.quotes W/System.err: at myoracle.com.quotes.WallpaperDeatilsActivity$ImageDownload.doInBackground(WallpaperDeatilsActivity.java:113)
12-07 11:01:00.120 28478-28540/myoracle.com.quotes W/System.err: at myoracle.com.quotes.WallpaperDeatilsActivity$ImageDownload.doInBackground(WallpaperDeatilsActivity.java:91)
Run Code Online (Sandbox Code Playgroud)
WallpaperActivity.java
class ImageDownload extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
int count;
try {
String root = Environment.getExternalStorageDirectory().toString();
System.out.println("Downloading");
URL url = new URL(params[0]);
URLConnection conection = url.openConnection();
conection.connect();
// getting file length
int lenghtOfFile = conection.getContentLength();
// input …Run Code Online (Sandbox Code Playgroud)