Android開発 ファイルへ書き込んだ場合どこに保存されるのか?
OutputStreamWriterで書き込んだ場合、Androidのどこに保存されるのだろうか?
/data/data/パッケージ名/files以下に保存されます。
パッケージ名とはcom.example.testみたいな名前ですね。
ところがこれがすんなりアクセスできません。
普通にlsしてみるとpermission deniedとエラーが表示されます。
run-as パッケージ名でアクセスできるようになります。
files以下にファイルが保存されています。
run-asできない端末もあるようですが、Nexus5ではできました。
Android開発 Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE 解決方法
Eclipseのエミュレーターでテストしていると Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
というエラーが出てきました。
1時間ハマりましたが、解決できました。
エラー内容ですが、アプリのAPKをインストールしようとしたけれど、ストレージがいっぱいでインストールできない、というエラーです。
コマンドでエミュレーターと接続します。
adb shell
dfコマンドでディスク容量を確認することができます。
この/dataディレクトリが一杯なのでもうアプリインストールできないよ。
となっています。
/dataディレクトリのサイズを増やせばいいのですね。
ところがこれができません。
config.iniのdisk.dataPartition.size=400M これをいじっても起動オプションを追加しても変更できないようになっています。
一度ADBを削除し新規で作りなおすしかないようです。
Internal Storageを400MBでもすれば十分です。
変更後のdfの結果です。/dataが増えていますね。これでアプリをインストールし放題になります。
Android開発 Nexus5のエミュレーターが起動しない場合の対策
EclipseでNexus5のエミュレーターがエラーになり起動しないことがあります。
いくら待っても画面が真っ黒でAndroidのロゴが出ない、waiting Homeで止まります。
ハマりましたが、無事Nexus5のエミュレーションでテストすることができるようになりました。
AVDの設定を載せておきます。
CPU: Intel Atom
skin: WVGA800 //これ重要。 no sikin や dynamic hardwareでは起動しません。
ram: 512 //少ない方が良いようです。
Android開発 複数のActivityをもつアプリ
Ancroidでは複数のActivityをもつことができます。
Intentを使ってデータを受け渡すことができます。
manifestにActivityを追加したことを記述する必要があります。
以下の内容をマニフェストに追加
<activity
android:name=".Activity2"//追加したアクティビティの名前
android:label="@string/app_name" >
</activity>
これをしないとエラーになります。
FATAL EXCEPTION: main
Process: com.example.MultiScreen, PID: 25526
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.MultiScreen/com.example.MultiScreen.Activity2}; have you declared this activity in your AndroidManifest.xml?
このActivityをマニフェストに追加しましたか?していないですよね?
追加してくださいよ。です。
android開発 Intentを使って電話を掛ける方法
androidプログラムから簡単に電話をかけることができます。
Intent intent = new Intent(
Intent.ACTION_CALL,
Uri.parse("tel:1234567890"));
startActivity(intent);
またマニフェストに以下のパーミッションを追加する必要があります。
<uses-permission android:name="android.permission.CALL_PHONE"/>
パーミションを追加しない場合はエラーが表示されます。
FATAL EXCEPTION: main
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{42e111c8 14077:com.example.IntentTel/u0a96} (pid=14077, uid=10096) requires android.permission.CALL_PHONE
そのままですね。
IntentさんがCALL_PHONEのパーミションを必要としていますよ。
android開発 スマホのウィンドウサイズの取得方法
スマホの画面サイズを取得する方法です。
Display display = getWindowManager().getDefaultDisplay();
Point p = new Point();
display.getSize(p);
Log.d("test", "Width=" + p.x);
Log.d("test", "Height=" + p.y);
APIレベルは13以上になります。
Nexus5ではタイトルバーを表示する場合、1080 x 1776になりました。
Androidの画面サイズを攻略して機種依存を吸収する(ナビゲーションバーとステータスバーのサイズを取得する) | Tech Booster