小编Cum*_*tru的帖子

使用Android原生Binder发送自定义对象

我只能找到有关Parcelable的Java示例.我的目标是在本机C++(而不是NDK)中创建一个简单的服务和客户端,它将使用Binder来接收和发送序列化的自定义对象.

MyClass
+ std::string
+ enum
+ int
+ bool
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface android android-ndk android-binder

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

使用Binder从Native cpp应用程序中捆绑Intent

我试图从本机cpp代码调用一个intent.基本上,根据我的理解,我必须编写一个Parcel以匹配frameworks/base/core/java/android/app/ActivityManagerNative.java中的确切反序列化序列; 案例BROADCAST_INTENT_TRANSACTION.

到目前为止的进展是我已经在Java应用程序中收到了意图,但我对bundle有效负载有一些问题.我已经调试了Java应用程序,似乎它将int作为int读取而不是读取包含bundle的键的类型的int.

W/System.err( 1386): java.lang.RuntimeException: Parcel android.os.Parcel@71aa5c5: Unmarshalling unknown type code 6815843 at offset 12
W/System.err( 1386):    at android.os.Parcel.readValue(Parcel.java:2228)
W/System.err( 1386):    at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
W/System.err( 1386):    at android.os.BaseBundle.unparcel(BaseBundle.java:221
Run Code Online (Sandbox Code Playgroud)

这是使用的本机代码

#include <unistd.h>
#include <binder/IBinder.h>
#include <binder/IServiceManager.h>
#include <binder/Parcel.h>
#include <utils/String8.h>
#include <assert.h>

namespace android {

static const int BROADCAST_INTENT_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION + 13;

int send_intent()
{
    int NULL_TYPE_ID = 0;

    sp<IServiceManager> sm = defaultServiceManager();
    sp<IBinder> am = sm->checkService(String16("activity"));
    assert(am != NULL);

    Parcel data, reply;
    data.writeInterfaceToken(String16("android.app.IActivityManager"));
    data.writeStrongBinder(NULL);

    /*intent*/

    data.writeString16(String16("com.etc.etc.receiver")); /* action */ …
Run Code Online (Sandbox Code Playgroud)

c++ android android-intent android-binder

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

如何查看特定列表视图项的详细数据

假设我有一个国家/地区的城市列表.如果用户单击其中一个,我想要显示一个新屏幕,其中包含该列表元素的详细信息.此外,该屏幕将有其他按钮(例如:写评论,发布图片)

我怎样才能实现这一目标?

android android-layout android-listview

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

从C/C++应用程序启动systemd服务或调用D-Bus服务

我有一个.service用于一个我不想在启动时启动的进程,但是在给定的时间以某种方式从另一个已运行的应用程序调用它.

另一种选择是在/ usr/share/dbus-1/services中放置一个D-Bus(我在我的应用程序中使用glib dbus)服务文件,并以某种方式从我的应用程序中调用它.此外,我也无法做到这一点.

比方说,从我的DBUS服务文件/usr/share/dbus-1/servicescom.callThis.service 从我的主要服务文件/lib/systemd/system is com.startThis.service

如果我从命令行运行一个简单的内省:

/home/root # dbus-send --session --type=method_call --print-reply \
--dest=com.callThis  /com/callThis org.freedesktop.DBus.Introspectable.Introspect
Run Code Online (Sandbox Code Playgroud)

将调用D-Bus服务文件,它将启动Exec(com.starThis)中的内容.问题是我想使用D-Bus glib从C/C++代码实现这一点.

unix service dbus process systemd

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

从派生到基础和后退的对象

如果我将一个对象转换为基类型并将其存储在std :: map中,然后将其取回并将其重新转换为派生类型,那么我是否仍然在派生类成员中拥有正确的数据?

我需要制作一种特定的演员吗?

c++ oop casting

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

在卸载的文件上执行mmap()后避免崩溃

我正在对可以卸载的文件执行mmap()(该文件位于用户可以随时删除的USB设备上),如果文件已卸载,我的应用程序崩溃然后我尝试访问任何元素在缓冲区.

对此有何解决方案?

c unix kernel mmap

5
推荐指数
2
解决办法
2554
查看次数

在Python 3.3上尝试"repo init"时出现TypeError

我有Arch Linux Python 3.3.0我已经下载了最新的repo,如果我尝试从Google示例中执行repo init,我会收到此错误:

 [username@otp-username-l2 teste]$ repo init -u https://android.googlesource.com/platform/manifest
 Traceback (most recent call last):
 File "/home/username/bin/repo", line 738, in <module>
main(sys.argv[1:])
File "/home/username/bin/repo", line 705, in main
_Init(args)
 File "/home/username/bin/repo", line 234, in _Init
_CheckGitVersion()
 File "/home/username/bin/repo", line 274, in _CheckGitVersion
if not ver_str.startswith('git version '):
TypeError: startswith first arg must be bytes or a tuple of bytes, not str
Run Code Online (Sandbox Code Playgroud)

我被迫做一个新的repo init的原因是我必须从已经初始化的repo做一个提交,但我已经从任何地方改变了git用户,我仍然得到这个:

Writing objects: 100% (12/12), 966 bytes, done.
Total 12 (delta 11), reused 0 (delta 0)
o …
Run Code Online (Sandbox Code Playgroud)

python git repository python-3.x

4
推荐指数
2
解决办法
6617
查看次数

应用程序需要运行dbus_g_proxy_new_for_name才能工作?

我可以在没有实现D-Bus方法的应用程序启动并运行的情况下调用dbus_g_proxy_new_for_name吗?我不确定这样做是否是好的做法,或者是否通常.

unix dbus glib

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

删除整数和字符串的简单std映射的完美方法

我的std :: map看起来像这样.

std::map<int, std::string> *myMap = new std::map<int, std::string>[100];
Run Code Online (Sandbox Code Playgroud)

我该如何删除?是否delete myMap足够?

c++ arrays dictionary

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

在Unix系统上获得几秒或几毫秒的正常运行时间

我需要一个方法,它可以给我自系统启动以来经过的毫秒数或秒数.我可以解析/proc/uptime,但我不能失去这个I/0和解析的性能.

我正在使用Linux和C/C++.也许我可以放一些Qt/Boost,但最好是原生的东西.

c c++ unix linux

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

我是否受限于C#和ASP?

目前,我有基本的C++和PHP技能.但是,我想切换到C#和ASP(对于Web部分).为什么?你会问.因为我有机会很容易地学习C#(包括OOP-ed)到一个非常高级的水平.因为我读到ASP与C#非常相似,我正在考虑学习它.

那么,有很多东西在C#中无法完成?什么样的东西?ASP的相同问题.

c# asp.net

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

应用程序不会启动,这是Logcat

Process: com.josephvarkey996gmail.test1, PID: 3348
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.josephvarkey996gmail.test1/com.josephvarkey996gmail.test1.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
            at com.parse.Parse.getParseDir(Parse.java:304)
            at com.parse.ParseObject.getFromDisk(ParseObject.java:667)
            at com.parse.ParseUser$10.then(ParseUser.java:1056)
            at com.parse.ParseUser$10.then(ParseUser.java:1003)
            at bolts.Task$14.run(Task.java:796)
            at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
            at bolts.Task.completeAfterTask(Task.java:787)
            at bolts.Task.continueWithTask(Task.java:599)
            at bolts.Task.continueWithTask(Task.java:610)
            at …
Run Code Online (Sandbox Code Playgroud)

android parse-platform

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