我之前发布了一个问题:'没有类的args构造函数不存在',但是当我通过Android Studio在我的手机上使用USB调试模式测试它时,它确实得到了答案.但是,当我将应用推送到Google Play时,它会停止工作并导致我在该问题中描述的相同错误.我今天重复测试,同样的事情发生了.
为了澄清,我正在测试:
谷歌播放APK的行为与Android Studio APK有什么不同?或者我错过了什么?
我正在尝试编写一个基本的客户端/服务器回显程序,以基于select()来测试定时器的重传用法(尽管我不得不注释掉该位以简化调试时它没有按预期工作).以下是相关代码的片段:
服务器:
from socket import *
import sys
import select
address = ('localhost', 6005)
server_socket = socket(AF_INET, SOCK_DGRAM)
server_socket.bind(address)
while(1):
print "Listening"
recv_data, addr = server_socket.recvfrom(2048)
print recv_data
if recv_data == "Request 1" :
print "Received request 1"
server_socket.sendto("Response 1", address)
elif recv_data == "Request 2" :
print "Received request 2"
data = "Response 2"
server_socket.sendto(data, address)
Run Code Online (Sandbox Code Playgroud)
客户:
from socket import *
import sys
import select
address = ('localhost', 6005)
client_socket = socket(AF_INET, SOCK_DGRAM)
num_retransmits = 0
while(num_retransmits < 60): …Run Code Online (Sandbox Code Playgroud) 我收到了来自Android 6.0.1用户的崩溃报告:
STACK_TRACE=java.lang.SecurityException: Permission Denial: reading com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F19181/ORIGINAL/NONE/443149508 from pid=18891, uid=10128 requires the provider be exported, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1620)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1104)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
at fr.free.nrw.commons.upload.UploadService.uploadContribution(UploadService.java:176)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:114)
at fr.free.nrw.commons.upload.UploadService.handle(UploadService.java:27)
at fr.free.nrw.commons.HandlerService$ServiceHandler.handleMessage(HandlerService.java:19)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)
从周围看,这似乎与Google相册许可有关com.google.android.apps.photos.permission.GOOGLE_PHOTOS。我的清单中已经具有此权限,但是该用户正在运行API 23,该API需要运行时权限。
问题是,如何为此调用运行时权限?我知道如何针对https://developer.android.com/training/permissions/requesting.html#perm-check所述的标准权限执行此操作,但是当我尝试执行此操作时
ActivityCompat.requestPermissions(thisActivity,
new String[]{com.google.android.apps.photos.permission.GOOGLE_PHOTOS},
Run Code Online (Sandbox Code Playgroud)
它不会编译。
我需要在运行时请求才能从Google相册访问图像的权限的名称是什么?
android android-permissions google-photos android-6.0-marshmallow
我想用PLINQ方法AsParallel()重写这个Parallel.For循环.据我所知,AsParallel()需要将整个序列传递给它,例如创建数组A,然后调用A.AsParallel().ForAll或A.AsParallel().选择.有没有办法让AsParallel()在一个范围内工作 - 在这种情况下,从低到高?
for k = 2 to m+n do
let low = max 1 (k-m)
let high = min (k-1) n
Parallel.For(low, high + 1, (fun j ->
Run Code Online (Sandbox Code Playgroud) 正在尝试使用数组和引用 - 我的目的是创建对数组的引用,然后在闭包内使用该引用来访问数组的某个元素.FSI尝试:
> let dk2 = Array.create 5 0
let dk2ref = ref dk2;;
val dk2 : int [] = [|0; 0; 0; 0; 0|]
val dk2ref : int [] ref = {contents = [|0; 0; 0; 0; 0|];}
> !dk2ref.[1]
stdin(3,2): error FS0039: The field, constructor or member 'Item' is not defined
Run Code Online (Sandbox Code Playgroud)
有没有直接的方法来访问引用数组的元素?(在这种情况下,dk2ref的第二个元素)?
例如http://msdn.microsoft.com/en-us/library/ee370378.aspx示例中的List.map : ('T -> 'U) -> 'T list -> 'U list。
抱歉,这听起来很简单,但在Google搜索中没有找到任何解释。
谢谢!
我正在尝试使用Android中的URI构建器来创建带变量的URL.我在Android中阅读过使用URI构建器或使用变量创建URL,但我不需要涉及一些我需要的符号.
我要创建的URL示例:
我想用变量代替ggscoord.我知道如何追加路径和查询参数......但我应该使用什么构建器方法用于%7C和| ?
我有一个应用程序,提取上传图像的GPS坐标(通过ExifInterface) - 为了这样做,它必须将图像的Uri转换为其文件路径.它适用于在仿真器(两个仿真器,不同的Android版本)上进行测试,但在真正的Android设备上进行测试时不起作用.
真实设备上的错误输出:
01-08 19:39:35.203: D/fr.free.nrw.commons.upload.ShareActivity(16980): Uri: content://media/external/images/media/10716
01-08 19:39:35.203: W/Image(16980): java.lang.IllegalArgumentException: Invalid URI: content://media/external/images/media/10716
01-08 19:39:35.203: W/Image(16980): at android.provider.DocumentsContract.getDocumentId(DocumentsContract.java:752)
01-08 19:39:35.203: W/Image(16980): at fr.free.nrw.commons.upload.FilePathConverter.getFilePath(FilePathConverter.java:31)
01-08 19:39:35.203: W/Image(16980): at fr.free.nrw.commons.upload.ShareActivity.onCreate(ShareActivity.java:193)
01-08 19:39:35.203: W/Image(16980): at android.app.Activity.performCreate(Activity.java:6289)
01-08 19:39:35.203: W/Image(16980): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
01-08 19:39:35.203: W/Image(16980): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
01-08 19:39:35.203: W/Image(16980): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
01-08 19:39:35.203: W/Image(16980): at android.app.ActivityThread.access$900(ActivityThread.java:177)
01-08 19:39:35.203: W/Image(16980): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
01-08 19:39:35.203: W/Image(16980): at android.os.Handler.dispatchMessage(Handler.java:102)
01-08 19:39:35.203: W/Image(16980): at android.os.Looper.loop(Looper.java:145)
01-08 19:39:35.203: W/Image(16980): at android.app.ActivityThread.main(ActivityThread.java:5951)
01-08 19:39:35.203: …Run Code Online (Sandbox Code Playgroud) 我运行代码时从不调用onRequestPermissionsResult().我的片段中有一个请求权限的方法:
void initiateGalleryUpload() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(getActivity(), READ_EXTERNAL_STORAGE) != PERMISSION_GRANTED) {
if (shouldShowRequestPermissionRationale(READ_EXTERNAL_STORAGE)) {
new AlertDialog.Builder(getActivity())
.setMessage(getString(R.string.read_storage_permission_rationale))
.setPositiveButton("OK", (dialog, which) -> {
Timber.d("Requesting permissions for read external storage");
requestPermissions(new String[]{READ_EXTERNAL_STORAGE}, 1);
dialog.dismiss();
})
.setNegativeButton("Cancel", null)
.create()
.show();
} else {
requestPermissions(new String[]{READ_EXTERNAL_STORAGE},
1);
}
} else {
controller.startGalleryPick();
}
}
else {
controller.startGalleryPick();
}
Run Code Online (Sandbox Code Playgroud)
并且同一片段中的另一个方法覆盖onRequestPermissionsResult:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Timber.d("onRequestPermissionsResult: req code = " + " perm = …Run Code Online (Sandbox Code Playgroud)