Android
 Computer >> コンピューター >  >> プログラミング >> Android

ルート権限を取得されたデバイスで実行されているかどうかをAndroidで判断するにはどうすればよいですか?


場合によっては、支払いゲートウェイのルート化されたデバイスでアプリケーションを実行することを許可しないでください。この例は、ルート化されたデバイスで実行されているかどうかを判断する方法を示しています。

ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。

ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   android:id = "@+id/parent"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity"
   android:gravity = "center"
   android:orientation = "vertical">
   <TextView
      android:id = "@+id/rootFinder"
      android:layout_margin = "20dp"
      android:textAlignment = "center"
      android:layout_width = "match_parent"
      android:layout_height = "wrap_content" />
</LinearLayout>

上記のコードでは、テキストビューを使用しています。ルートに関する情報が含まれています。

ステップ3 −次のコードをsrc / MainActivity.java

に追加します
package com.example.andy.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   int view = R.layout.activity_main;
   TextView rootFinder;
   @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(view);
      rootFinder = findViewById(R.id.rootFinder);
      executeShellCommand("su");
   }
   private void executeShellCommand(String su) {
      Process process = null;
      try {
         process = Runtime.getRuntime().exec(su);
         rootFinder.setText("It is rooted device");
         Toast.makeText(MainActivity.this, "It is rooted device", Toast.LENGTH_LONG).show();
      } catch (Exception e) {
         rootFinder.setText("It is not rooted device");
      } finally {
         if (process ! = null) {
            try {
               process.destroy();
            } catch (Exception e) { }
         }
      }
   }
}

上記のコードでは、デバイスがルート化されているかどうかをテストし、テキストビューにテキストを追加しています。 Androidデバイスがルート化されているかどうかを確認するには、次のコードを使用します-

executeShellCommand("su");

..........................................................................................
private void executeShellCommand(String su) {
   Process process = null;
   try {
      process = Runtime.getRuntime().exec(su);
      rootFinder.setText("It is rooted device");
      Toast.makeText(MainActivity.this, "It is rooted device", Toast.LENGTH_LONG).show();
   } catch (Exception e) {
      rootFinder.setText("It is not rooted device");
   } finally {
      if (process ! = null) {
         try {
            process.destroy();
         } catch (Exception e) { }
      }
   }
}

アプリケーションを実行してみましょう。実際のAndroidモバイルデバイスをコンピューターに接続していると思います。 android studioからアプリを実行するには、プロジェクトのアクティビティファイルの1つを開き、ツールバーの[実行]アイコンをクリックします。オプションとしてモバイルデバイスを選択し、デフォルトの画面を表示するモバイルデバイスを確認します-

ルート権限を取得されたデバイスで実行されているかどうかをAndroidで判断するにはどうすればよいですか?

上記の結果では、outデバイスはまだルート化されていません。


  1. Android でボイスメールが機能しない問題を修正する方法

    ボイスメール システムは、電話にアクセスできない場合や、電話のバッテリーが不足している場合に便利なため、優れています。連絡先は、電話がオフになっている場合や電話に出られない場合でも、簡単にボイスメール メッセージを送信できます。後ですべてのボイスメールを聞いて、好きなように処理できます。 携帯電話の電源を切り、愛する人と休暇に出かけたいですか?デバイスでボイスメール システムを設定することで、それを行うことができます。これにより、重要な電話を逃さず、後でかけ直すことができます。ただし、ボイスメールがデバイスで正常に機能している場合にのみ可能です。ボイスメールが Android フォンで機能せ

  2. 「Move To iOS Not Working」を修正する方法

    人々が Android デバイスから iOS に簡単に移行できるようにするために、Apple は Move to iOS というアプリを開発しました。 Android 搭載デバイスから iOS デバイスにデータをすばやく簡単に移行できます。ほとんどの場合、アプリは問題なく動作しますが、かなりの問題があります。お使いの携帯電話で「iOS に移行」が機能しないことがあります。 ここには、犯人である可能性のあるものがたくさんあります。転送プロセス中に Android が別の WiFi ネットワークに切り替わったのではないでしょうか?それとも、iPhone が対応できる以上のアイテムを iPhone