小编ifo*_*e2d的帖子

图片共享意图适用于Gmail,但崩溃了FB和Twitter

我试图允许用户将图像共享到设备上的其他应用程序.该图像位于我的应用程序内部存储区域的files /子目录中.它适用于Gmail,但Facebook和Twitter在响应我的意图时都崩溃了.

编辑:Google+也可以.

以下是相关的代码部分.

在Application.xml中

<provider 
    android:name="android.support.v4.content.FileProvider"
    android:authorities="org.iforce2d.myapp.MyActivity"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
</provider>
Run Code Online (Sandbox Code Playgroud)

XML/filepaths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="shared" path="shared"/>
</paths>
Run Code Online (Sandbox Code Playgroud)

以下是我的活动中的共享代码:

File imagePath = new File(getContext().getFilesDir(), "shared");
File newFile = new File(imagePath, "snapshot.jpg");
Uri contentUri = FileProvider.getUriForFile(getContext(),
                     "org.iforce2d.myapp.MyActivity", newFile);    

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

List<ResolveInfo> resInfos = 
    getPackageManager().queryIntentActivities(shareIntent,
                                              PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : resInfos) {
    getContext().grantUriPermission(info.activityInfo.packageName, 
                                    contentUri,
                                    Intent.FLAG_GRANT_READ_URI_PERMISSION);
}

startActivity(Intent.createChooser(shareIntent, "Share image..."));
Run Code Online (Sandbox Code Playgroud)

contentUri记录时的值是:

content://org.iforce2d.myapp.MyActivity/shared/snapshot.jpg

我只使用Gmail,Facebook和Twitter作为接收应用程序进行了检查,但结果在各种操作系统版本(从2.2.1到4.4.3)中都非常一致,7个设备包含Kindle.

Gmail效果很好.图像缩略图显示在邮件撰写中,并在发送时成功附加到邮件.

Twitter和Facebook都崩溃了,如下所示.

以下是来自logcat的堆栈跟踪,显示了这两个应用程序所遇到的问题,对于它们来说似乎是同样的问题(这取自4.4.3,但错误实际上一直回到2.2. 1尽管错误消息的措辞略有不同):

Caused by: 
  java.lang.IllegalStateException: …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-sharing android-fileprovider

17
推荐指数
2
解决办法
4550
查看次数

console.log什么时候执行?

我正在尝试使用console.log来调试一些非常简单的Javascript,但它输出的变量值直到console.log调用之后才会更改,此时变量是"类"成员(Chrome 22,Firefox 16).

我期望发生的一个例子是这样的:

var a = 1;
console.log(a);
a += 20;

//console output says a is 1
Run Code Online (Sandbox Code Playgroud)

但如果变量是"类"成员:

var a = new myClass(1);
console.log(a);
a.x += 20;

//console output says a.x is 21
Run Code Online (Sandbox Code Playgroud)

如果控制台没有记录调用日志时存在的值,它何时最终决定记录该值,以及如何解决这个问题!

这里是fwiw的全部代码:

function myClass() {
    myClass.myClass.apply(this, arguments);
    if (this.constructor === myClass) this.myClass.apply(this, arguments);
};
myClass.myClass = function () {};
myClass.prototype.myClass = function (x_) {
    if (x_ === undefined) x_ = 0;
    this.x = x_;
}

var a = new myClass(1);
console.log(a);
a.x += 20;
Run Code Online (Sandbox Code Playgroud)

javascript console logging class

6
推荐指数
1
解决办法
833
查看次数

STM32CubeIDE只能刷一次,没有SWD调试

几年来,我一直在使用 mbed 在线编译器来创建 .bin 文件,然后像这样在命令行中使用 ST-LINK/V2 USB 加密狗刷写它们,一切都完美无缺:

st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000
Run Code Online (Sandbox Code Playgroud)

今天我下载了 STM32CubeIDE for Linux (Fedora 30) 并开始学习本教程,使用 maple mini (STM32F103CBT6)。

https://www.digikey.co.nz/en/maker/projects/getting-started-with-stm32-introduction-to-stm32cubeide/6a6c60a670c447abb90fd0fd78008697

构建项目并开始调试运行后,我得到输出:

STMicroelectronics ST-LINK GDB server. Version 5.3.2
Copyright (c) 2019, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.2.0                  
      -------------------------------------------------------------------



Log …
Run Code Online (Sandbox Code Playgroud)

stm32 gdbserver swd

6
推荐指数
1
解决办法
1万
查看次数

php包括导致不需要的换行符

(PHP 5.3.6)

我有一个php文件,其中只包含这个文本 - 没有php标签,没有尾随的换行符或任何地方无关的空格:

<div style="border:1px solid green">abc</div>
Run Code Online (Sandbox Code Playgroud)

现在包括这个来自另一个php文件如下(再次,没有任何无关的空白):

<div style="border:1px solid red"><?php include "abc.php" ?></div>
<br />
<div style="border:1px solid red"><div style="border:1px solid green">abc</div></div>
Run Code Online (Sandbox Code Playgroud)

我得到下面的结果.

请注意,第二种方法只是直接使用包含的内容.这些应该像下面的那样,但正如你所看到的那样,include会导致在包含文件的内容之前插入一些奇怪的换行符.我说"很奇怪",因为当我检查输出的来源(通过Chrome的视图源)时,那里看不到任何东西:

在此输入图像描述

当页面的这一部分显示在Chrome的元素检查器中时,似乎有些东西,但究竟是什么我无法分辨:

在此输入图像描述

它似乎只是一个空字符串,但为什么一个空字符串会导致换行,为什么它会在那里首先出现是一个谜.在include语句的末尾添加分号没有任何区别.我想到它可能是一个空字节或13(CR),但仍然不会导致HTML换行符.

有谁知道我怎么能摆脱这个不想要的换行?

php php-5.3

5
推荐指数
1
解决办法
3135
查看次数

堆栈框架内重复的内联构造函数导致"纯虚方法调用"?

我想知道是否有任何C++专家可以对这种奇怪的情况有所了解.Box2D物理引擎附带的一个示例是消息"称为纯虚方法",但仅限于某个编译器(并且仅在发布版本中).

您可能知道Box2D是一个非常可靠的代码块,所以我认为这可能是编译器的问题,特别是考虑到它只发生在这个特定的编译器上.我在Windows7上使用mingw32:

> gcc.exe --version
gcc version 4.4.0 (GCC)
Run Code Online (Sandbox Code Playgroud)

以下是Box2D相关部分的简要摘录.您可以在以下网址查看完整资料来源:

b2Shape.h
b2CircleShape.h
b2CircleShape.cpp
SensorTest.h

//base class
class b2Shape
{
public:
    virtual ~b2Shape() {}
    virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0;
};


//sub class
class b2CircleShape : public b2Shape
{
public:
    b2CircleShape();
    b2Shape* Clone(b2BlockAllocator* allocator) const;
};

inline b2CircleShape::b2CircleShape() {}

b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const
{
    void* mem = allocator->Allocate(sizeof(b2CircleShape));
    b2CircleShape* clone = new (mem) b2CircleShape;
    *clone = *this;
    return clone;
}
Run Code Online (Sandbox Code Playgroud)

请注意克隆功能中的新位置.

现在导致问题的执行归结为:

{
    b2CircleShape shape;
    shape.Clone(allocator); //ok
}
{
    b2CircleShape …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance vtable box2d mingw32

5
推荐指数
1
解决办法
413
查看次数

Andengine Box2D物理体在增加重量时不旋转

Andengine Box2D物理体在增加重量时不旋转,否则它完全旋转.我正在做一个玩家可以投掷炸弹的游戏,当玩家用炸弹投掷炸弹时,它的自然重量完全旋转但是当我增加炸弹的重量时炸弹没有旋转.我坚持这里..plz帮助.谢谢.

if (bomb)           
{
    mScene.detachChild(target);
    target = null;      
    bombFire = new Sprite(mBall2.getX()+mBall2.getWidth()/2,mBall2.getY(),bombFireRegion);
    mScene.attachChild(bombFire);
    bombBody = PhysicsFactory.createCircleBody(mPhysicsWorld, bombFire,BodyType.DynamicBody, bombFixDef);
    bombBody.setMassData(bombMass);
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(bombFire, bombBody, true, true));               
    Vector2 v = new Vector2((xpt-mBall2.getX()),(ypt-mBall2.getY()));
    bombBody.applyLinearImpulse(v,bombBody.getWorldCenter());
}
Run Code Online (Sandbox Code Playgroud)

android box2d game-physics andengine

1
推荐指数
1
解决办法
3021
查看次数