2017-08-10 3 views
1

私のアプリケーションからNetflixデータ、TVバージョン(ninja)をクリーンアップしようとしています。私は以下のコードを使用します:クリーンなアプリケーションデータが機能していません

private void clearPreferences() { 
    try { 
     // clearing app data 
     Runtime runtime = Runtime.getRuntime(); 
     runtime.exec("pm clear com.netflix.ninja"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

コンパイルしても何も起こりません。 私はコンソールを介して同じことをしようとすると、それはでだけで正常に動作:

adb shell pm clear com.netflix.ninja 

任意の提案?

答えて

0

adb shellは、Androidアプリケーションより高い特権で実行されます。ほとんどではないにしても、多くの場合、多くの場合、adb shellコマンドはAndroidアプリからは機能しません。ただし、デバイスがルートになっていて、コマンドをsuで実行する場合は例外です。

+0

私はsuコマンドを使用して上記のコードを書く必要がありますどのように? –

+1

@RodrigoSalomao:根ざしたデバイス用のアプリケーションでは動作しません。そのため、詳細はわかりません。 – CommonsWare

+0

ちょうど私の頭の上から、アプリがデバイス管理者(ルーピングなしでリクエストできる)の場合、これを実行するためのAPIがあると思います。 Samsungデバイスの場合は、これを行うKNOX APIもあります。 – shalafi

0

ありがとうございました。私はコマンドで "su"を使って作業しなければなりません。しかし、私は最初に自分のデバイスを根絶する必要がありました。誰かがそれを必要とする場合

は、コードに従ってください:

@OnClick(R.id.clean) 
    protected void cleanAppData() { 
     try { 
      Process p = Runtime.getRuntime().exec("su"); 
      DataOutputStream dos = new DataOutputStream(p.getOutputStream()); 
      dos.writeBytes("pm clear com.netflix.mediaclient\n"); 
      dos.writeBytes("exit\n"); 
      dos.flush(); 
      dos.close(); 
      p.waitFor(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

    } 
関連する問題