2016-03-23 6 views
3

Android Nのアプリにクイック設定の切り替えを追加しようとしています。クイックタイルが表示されますが、クリックしても何もしません。触れたときに目に見えるフィードバックを見ることができるので、クリックを認識していることがわかりますが、クリックすると何もしません。クイック設定アンドロイドのToogle N

public class QuickSettingTileService extends TileService { 

    public QuickSettingTileService() 
    { 
    } 

    @Override 
    public IBinder onBind(Intent intent) 
    { 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startID) 
    { 
     //some setup code is here 

     return START_STICKY; 
    } 

    @Override 
    public void onClick() 
    { 
     Context context = getApplicationContext(); 

     Toast.makeText(context, "Quick Setting Clicked", Toast.LENGTH_SHORT).show(); 
     //Toggle code is here 
    } 
} 

私のマニフェストはほとんど直接ドキュメントからコピーしたコードを持っています

は、ここに私のサービスコードです。わずかな変更が行われています

<service 
    android:name=".QuickSettingTileService" 
    android:label="@string/app_name" 
    android:icon="@drawable/quick_toggle_off" 
    android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> 
    <intent-filter> 
     <action android:name="android.service.quicksettings.action.QS_TILE" /> 
    </intent-filter> 
</service> 

サービスは、アプリを開いた時に開始されます。

Intent serviceIntent = new Intent(this, QuickSettingTileService.class); 
startService(serviceIntent); 
+0

トーストを使用するのではなく、LogCatにロギングを試みてください。 – CommonsWare

答えて

5

だけに必要はありません

@Override 
public IBinder onBind(Intent intent) 
{ 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startID) 
{ 
    //some setup code is here 
    return START_STICKY; 
} 

あなたQuickSettingTileServiceクラスからこれらの行を削除しますTileServiceのonBind()またはonStartCommand()をオーバーライドします。

また、このサービスを明示的に開始する必要はありません。マニフェストの許可とインテントフィルタは、タイルが通知バーに追加されたときにAndroid OSがサービスを開始するようにします。

+0

うわー、それは簡単だった。ありがとう!もともとonBindをオーバーライドせずにエラーになっていましたが、TileServiceではなく、誤ってServiceを延長していたと思います。 – Randy

+0

私はうまくいってうれしいです。これは他の人に役立つように答えとして記入することを忘れないでください。 – murki

関連する問題