Android Notesの権限管理
4735 ワード
私のGitPageブログ
前言
本文は主にAndroidにおける権限の管理について述べる.ここではまず三つ
権限の追加
コードに権限チェックを追加
コードで呼び出す
このとき
AppのActivityに権限を追加
Activityへのアクセス権の追加
この権限は、別のAppで宣言する必要があります.
最後に別のAppでMyAtyを起動する方法は、次のとおりです.
くぼみ
あるアプリケーションで別のアプリケーションのActivityを起動する別の方法である、構成
まとめ権限をよりよく管理するために、同じプログラム間の方法でも権限を設定する場合がありますが、その場合は権限をカスタマイズして、 同じAppでサービスを起動したり、Activityで権限を必要としない場合は、Activityを変更する権限を設定してもアクセスできます. 異なるApp間でActivityに権限を設定し、他のAppがアクセスしたい場合は権限を宣言する必要があります.
前言
本文は主にAndroidにおける権限の管理について述べる.ここではまず三つ
permission
1.uses-permission
:アプリケーションが持つ権限、例えばandroid.permission.INTERNET
2.permission
:あるアプリのうちの1つのサービスまたは1つのActivityが権限を持たないアプリの起動を許可しない場合、そのサービスまたはActivityに権限3を設定できるように開発者がカスタマイズした権限.android:permission
:ActivityまたはServiceのための権限です権限の追加
コードに権限チェックを追加
コードで呼び出す
context.checkCallingOrSelfPermission(SAY_HELLO_PERMISSION)
パーミッションをチェックし、戻り値は2種類あるPackageManager.PERMISSION_GRANTED
とPackageManager.PERMISSION_DENY
で、前者はパーミッションを備えていることを示し、後者は逆である.権限がある場合にのみ呼び出すことができるsayHello
メソッド.public static final String SAY_HELLO_PERMISSION="com.android.tongs.checkpermissionincode.permission.SAY_HELLO_PERMISSION";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.startMyAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,MyAty.class));
}
});
sayHello(this);
}
public void sayHello(Context context){
int checkResult = context.checkCallingOrSelfPermission(SAY_HELLO_PERMISSION);
if(checkResult!= PackageManager.PERMISSION_GRANTED){
throw new SecurityException(" sayHello ");
}
System.out.println("Hello");
}
このとき
AndroidManifest
ファイルに権限を宣言し、宣言しないと投げ出すSecurityException
異常です.<!-- -->
<permission android:name="com.android.tongs.checkpermissionincode.permission.SAY_HELLO_PERMISSION" />
<!-- APP -->
<uses-permission android:name="com.android.tongs.checkpermissionincode.permission.SAY_HELLO_PERMISSION" />
AppのActivityに権限を追加
Activityへのアクセス権の追加
<activity android:name=".MyAty" android:permission="com.android.tongs.checkpermissionincode.permission.Start_MyAty">
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="com.android.tongs.checkpermissionincode.intent.action.MyAty"/>
</intent-filter>
</activity>
AndroidManifest
このカスタム権限をファイルに宣言<permission android:name="com.android.tongs.checkpermissionincode.permission.Start_MyAty" />
この権限は、別のAppで宣言する必要があります.
<!-- , App MyAty-->
<uses-permission android:name="com.android.tongs.checkpermissionincode.permission.Start_MyAty"/>
最後に別のAppでMyAtyを起動する方法は、次のとおりです.
startActivity(new Intent("com.android.tongs.checkpermissionincode.intent.action.MyAty"));
くぼみ
あるアプリケーションで別のアプリケーションのActivityを起動する別の方法である、構成
Intent-Filter
、デフォルトcategory
、追加action
はcom.android.tongs.checkpermissionincode.intent.action.MyAty
である.パッケージ名+intent+action+クラス名でなければなりません.そうしないと、このactionは見つかりません.まとめ
AndroidManifest
ファイルに宣言します.