• 締切済み

ANDROIDアプリからシェルコマンド

アンドロイドアプリ、というかJAVA初心者です。 アンドロイドアプリからシェルコマンドを実行したいのですが、うまくできません。他サイトを参考に以下のように作ってみたのですがどこが悪いのでしょうか? このアプリを実行してもchmodできません。 ちなみにadb shellでは同様のコマンドでちゃんとchmod できます。 よろしくお願いします。 package com.android.test; import java.io.DataOutputStream; import java.io.IOException; import android.app.activity; import android.os.Bundle; import android.widget.TextView; public class ShelltestActivity extends Activity { /** Called when the activity is first created. */@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = new TextView(this); tv.setText("Hello, World"); setContentView(tv); try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream dos = new DataOutputStream(p.getOutputStream()); dos.writeBytes("chmod 777 /data/app/*\n"); dos.flush(); } catch (IOException e) { e.printStackTrace(); } } }

  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

noname#147388
noname#147388
回答No.2

Java の例外はここに質問してもいいけど、 Linuxコマンド側の実行失敗は別の場所なきがする。 プロセスから InputStream なり ErrorStream なり取得して情報取得すべし。

回答No.1

そもそもroot取ってない端末でシステム領域いじれたっけ?

mnrmnr
質問者

お礼

ご回答ありがとうございます。 エミュレータでの話で、アプリ自体に全権限つけてます。 /dataはw権限ありです。

関連するQ&A

  • 自作アンドロイドアプリで足し算できない

    プログラミングの初心者ですがアンドロイドアプリを作ってみたいと思って練習しています。 練習用のアプリを作りエミュレーターで表示させたいのですがうまくいきません。 プログラムのどこかが間違っているのでしょうか? eclipse上ではエラーのマークなどは出ておらす、エミュレーターもちゃんと起動されますが、 アプリ起動直後にエミュレーター画面内に強制終了の画面が出て計算結果が表示されません。 OS Windows7 64bit --------------------------------- package in.andante.android.CalAppli; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class CalAppliActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); int i1; int i2; int i3; i1 = 1; i2 = 2; i3 = i1+i2; tv.setText(i3); setContentView(i3); } } よろしくお願いします

    • ベストアンサー
    • Java
  • Android開発の最初の段階でつまづく

    アンドロイドのアプリ制作を始めようと思い、なんとか環境を揃え、早速チュートリアルサイトを見ながら始めたのですが、早速、最初のHelloWorldでつまづいてしまいました。 以下ソースコードです。 ********************************************************************************** package helloAndroid.PackageName; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello,Andloid"); setContentView(tv); } } ********************************************************************************** このように書いたのですが、 The left-hand side of an assignment must be a variable というエラーが下から4行目の tv.setText("Hello,Andloid"); のところで出ます。 調べてはいるのですが、このエラーの意味がいまいちわからず困っています。 アドバイスよろしくお願いします。 私自身はVBを少し触ったことのある程度で、Javaは初めてです。

  • androidのオプションメニューについて

    androidアプリの作り方を勉強しているのですが、オプションメニューを実装しようと思いonCreateOptionMenuを書いたのですが、エミュレータでメニューボタンを押してもメニューが現れません。onCreateOptionMenu内でTextViewの文字を変更するようにしたのでが、TextViewは変更されず、そもそもonCreateOptionMenuがスルーされているようです。だれか、わかる方がいたらご教授お願いします。 以下ソースです。 シンプルにしたのですが問題がわかりません。 import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; public class Test04Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public boolean onCreateOptionMenu(Menu menu){ super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } }

  • andopoid開発HelloWorld

    andopoidをインストールしてHelloWorldを表示させようとしました。 emulatorは起動できましたが、待っていてもHelloWorldが実行されません。 他のサイトで結構時間がかかると書いてあったので、一時間放置していてもHelloWorldは 実行されず、menuボタンや他のボタンも実行できません。 下記がソースになりますが、何か足りない部分とかありますでしょうか? スイマセン、詳しい方教えて下さい。 package com.android.example; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, World"); setContentView(tv); } }

  • Androidプログラミング アプリが停止する

    eclipseでボタンを押すと画像が表示されるアプリをつくろうとしていましたがボタンをを押すとポップアップで「~を停止します。」と表示されアプリが落ちてしまいます。 Ver4.0を使用しています。 package my.application.imageviewer; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class ImageViewer extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void showImage(View view) { ImageView imageView1 = (ImageView)findViewById(R.id.imageView1); imageView1.setImageResource(R.drawable.sample); } } プログラムにミスがあるのでしょうか? 宜しくお願い致します。

  • androidのアプリを作ってるんですが

    import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; import android.content.Intent; import android.widget.ImageView; public class GameActivity extends Activity implements OnTouchListener{ private ImageView target; @Override protected void onCreate(Bundle savedInstanceState) { target = (ImageView)findViewById(R.id.imageView1); super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); target.setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent motion) { switch(motion.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: break; } return true; } } これからゲーム本体を作っていこうとしてるんですが、onTouchメソッドを実装してから実機で動作しなくなり、先に進めず困っています。なぜこれで動作しないのか私の知識不足でよくわかりません。 回答お願いいたします。

    • ベストアンサー
    • Java
  • androidでアプリを作ろうとしてるのですが

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; public String strInch; public String gettext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check"); strInch = ("check"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setText("check"); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { gettext = edtText.toString(); if (strInch==gettext){ txtjudge.setText("ok"); } }; }); }} 上のプログラムで strInchに入ってるデータとgettextで取得した文章を比較して同じなら txtjudgeにOKと引き渡して表示させたいのですがうまく動きません 何方かどうぞよろしくお願い致します

    • ベストアンサー
    • Java
  • androidアプリ開発 youtube表示方法

    androidアプリをjavaで開発してます。youtube動画を見れるアプリにしたいです。下記のコードでyoutubeサイトには行けるんですが、画象をクリックしても動画を見ることができません。どのようにすれば動画を見れるようになるでしょうか?どうぞよろしくお願いします。 package com.XXX; import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebViewActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web); WebView webView = (WebView)findViewById(R.id.main_webview); webView.setWebViewClient(new WebViewClient()); webView.loadUrl(url); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); } }

  • Android実行時のエラー(実機にて)

    Androidアプリ開発初心者の者です。 下記に記載しています書籍のアプリを 作成中にエラーが起こりスマホのアプリが強制終了と いう形で落ちてしまいます。 【アプリを作ろう! ゼロから学ぶアプリの作成から公開まで Android2.3~4.1対応】  http://ec.nikkeibp.co.jp/item/books/P96130.html Eclipseのコード画面は以下のようになっています。 【OmikujiActivity.java】 package makeApplication.omikuji; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class OmikujiActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 文字を表示する TextView tv = (TextView) findViewById(R.id.action_settings); tv.setText("おみくじアプリ"); } } 下から4行目のaction_settingsの部分は書籍では補完候補で、 hellow_view:int - R.idがポップアップ表示されているのですが、 現在私のコード画面には表示されず、仕方なくaction_settingsを選択しています。 上記で保存し実行すると、スマホの実機の方で「おみくじ」と表示されず、 そのまま強制終了してしまい再度実行を促されてしまいます。 action_settingsの部分が原因なのかどうかよく 分からないのでお詳しい方ぜひ教えて頂きたいです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • android HashMapについて助言お願いし

    初心者ですが、どうぞ宜しくお願いします。 下記コードでは、マップに 「 map.put( "Key1", "val1" ); map.put( "key2", "val2" ); 」を追加しているのですが、このデータをキーから取り出しテキストビューに表示しようとしています。 このままではエラーはないのですが、何も表示されない状況です。 初心者の無知な質問となりますが、 テキストビューへの表示方法はどのようにすればよいのでしょうか? 何か別の方法でもよいので、ご教授宜しくお願いいたします。 -------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv1"></TextView> </LinearLayout> ------------------------------------------------------------ package com.test; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class TestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //1)HashMapからMapのインスタンスを生成 HashMap<String, String> map = new HashMap<String, String>(); // キーと値のペアを格納 map.put( "Key1", "val1" ); map.put( "key2", "val2" ); // 指定したキーに対応する値を取得. String val = (String)map.get( "key1" ); // テキストビュー取得 TextView tv = (TextView)findViewById(R.id.tv1); tv.setText(val); } }

    • ベストアンサー
    • Java

専門家に質問してみよう