2

Androidのソースコードでソケットを開こうとしています。具体的には、現在、DisplayDevice.cppファイルを使用していますが、ソケットコードの場所が変更される可能性があります。私がした直後:

int fd = socket(AF_INET, SOCK_STREAM, 0);

fdは-1として返され、エラーメッセージを確認すると、PermissionDeniedとして表示されます。私はこれについて多くのことを調べました、ほとんどの答えはAndroidManifestファイルにインターネット許可を追加することを含みます。私が追加しているコードはAndroidソースコード内にあるため、これは私には機能しません。

拒否された許可を回避する方法があるかどうか疑問に思いました。または、これを行うためのより良い方法がある場合/使用する別のタイプのソケット(現在、私はからのソケットを使用しています

ありがとうございました。

4

1 に答える 1

2

Permission Deniedエラーが発生するのは当然です。これは単にあなたが正しい許可を持っていないからです:)。アンドロイドパーミッションモデルをチェックしてください!

オペレーティングシステムの通常のユーザーのようなシナリオを想像してみてください。あなたはあなたのようなソケットを開こうとするプログラムを書きます。名前付きソケットを作成する場所によっては、おそらく同じ問題に直面するでしょう。

DisplayDevice.cpp (ソースからandroidをコンパイルする)でソケットを作成しようとしているので、スーパーユーザーとしてソースをコンパイルすることに興味があるかもしれません。これがm-ricによって投稿された解決策です(私はそれをテストしたことがありません)。

同様の方向で、この魅惑的なトピックの研究中に私が有用だと思ったいくつかの有用な指針/参照は次のとおりです。

  1. https://android.stackexchange.com/questions/18857/how-to-build-compile-su-from-source
  2. execvコマンド=> http://code.google.com/p/superuser/source/browse/trunk/su/su.c?r=2#169
  3. https://github.com/ChainsDD/su-binary
  4. http://e2e.ti.com/support/omap/f/849/p/178679/648158.aspx#648158
  5. Google I /O2011のビデオhttp://www.youtube.com/watch?v=5yorhsSPFG4
于 2013-03-08T23:23:22.357 に答える