ActionBarでなくツールバーを使っている時の前に戻るボタンを作る

Android StudioでActionBarでなくツールバーを使ったときの前に戻るボタンの作り方のメモ

メインのActivity.javaで

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

な感じでツールバーをセットしてると

import android.support.v7.app.ActionBar;
/* ... */
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sample);

    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

とActionBarを取れます、getSupportActionBar()がみそです

あとは戻るをタップした時の処理を書く

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

これでできました

Android 6.0 (Marshmallow)でPublicディレクトリに書き込めない

Android 6.0 (Marshmallow / マシュマロ)の実機でデバッグしてたらPublicディレクトリに書き込めませんでした
Lolipopだったら問題なかったのに..

調べてみたらAndroid 6からはパーミッションが変わってるからでした

Working with System Permissions | Android Developers
をみて対応した書き方をするかですが、手っ取り早くtarget SDK versionを下げました

build.gradleファイルを開いて

targetSdkVersion 22

に変更
これでコンパイルしなおせば、とりあえず書き込めるようになりました
targetSdkVersion 23がAndroid 6です
正しい対応はもうちょっとAndroid 6 がシェア出てからにします

参考)
Androidアプリで書きだしたファイルがPCで見えない
Android 6(M) permission issue (create directory not working) – Stack Overflow

Androidアプリで書きだしたファイルがPCで見えない

Androidアプリを作っていて、データをファイルに保存、USBでAndroidをつないでファイルを取り出そうとすると..ない
で困ったのでメモ

Android端末は Nexus 5 (Lolipop) と Nexus 5x (Marshmallow) を使いました
PCはWindows 7とUbuntu 14.4
Android端末でデバッグしてます

ファイルを書きだしたソースコードはこんな感じ

File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
fw = new FileWriter(file, true);
fw.write("sample");
fw.close();

マニフェストにパーミッションを追加

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="sample">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application>
        ・・・・
    </application>
</manifest>

External StrorageのDocumentsディレクトリを指定、ここに保存したらどこからでも見れるはず
Android端末でアプリを使って見てみるとちゃんと保存されてますが、
PCへUSBでつないで見ると見当たりません

MediaScannerConnectionを使ってやると見えるようになるようで、変更

File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
MediaScannerConnection.scanFile(this, new String[]{file.getAbsolutePath()}, null, null);
fw = new FileWriter(file, true);
fw.write("sample");
fw.close();

これで見えるようになりました!

MeMO Pad HD 7(ME173X)をUbuntuで認識させる

Ubuntu 14.04のPCに
タブレット | ASUS MeMO Pad HD 7 (ME173X) | ASUS 日本
をつないで、Android Studioで実機テストしてみました

MeMO Pad HD 7がなかなかつながらなかったのでメモ

まずはvender IDを記載
Using Hardware Devices | Android Developers
にメーカーごとにのってます

$ sudo vim /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666", GROUP="plugdev"

あとは、MeMO Pad HD 7で設定へいって開発者オプション、USBデバッグをONにします
(開発者オプションはタブレット情報のAndroidバージョンあたりを数回連打するとでてくるはず)

これで、通信できるUSBケーブルでつなげば認識するはず..がなかなかせず
USBの接続モードをMTPモードにしたら、認識して、実機デバッグできるようになりました

参考)
UbuntuにAndroid端末をUSB接続で認識させる | bgbgbg
UbuntuにAndroid端末をUSB接続で認識させる、ではまったところ | bgbgbg