2011-11-07 5 views
8

私のアプリの1つでは、以下のコードを使って電話をかけています。インテントを使って電話をかけるときに必要な許可

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(...)); 
startActivity(intent); 

ドキュメントには、以下のマニフェストの許可が必要です。

<uses-permission android:name="android.permission.CALL_PHONE" /> 

これは本当ですか?必須?私は電話とカメラ機能の違いを理解していません。電話の意図を使用する場合、私は許可が必要ですが、カメラの意図に対する許可は必要ありません:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
... 
startActivityForResult(intent, 1); 

意図の助けを借りて解雇された場合に許可を必要とするハードウェア機能に関するリストはありますか?それじゃない?

答えて

12

これは本当に必要ですか?

はい。

私は電話機とカメラ機能の違いを理解していません。

電話での通話には人件費がかかります。したがって、あなたが電話番号を直接ダイヤルした場合(ACTION_DIAL)、Androidはこれを許可する前にユーザが同意することを望んでいます。

カメラで写真を撮ることは、通常、直接的にユーザーに費用をかけることはありません。

意図の助けを借りて解雇された場合、許可されていないハードウェア機能についてのリストはありますか?

実際はありません。

+0

ありがとうございました。私は今理解している。 –

+0

この回答を偶然見つけました。次のリンクを使用して更新する必要があります(最後の部分):http://developer.android.com/guide/topics/manifest/uses-feature-element.html#features-reference? – Shaihi

+1

@Shaihi:そうではありません。 OPは、あなたが提供したリンクでカバーされていない、特定の権限を意味する「意図」アクションを本当に求めていました。 – CommonsWare

1

カメラにリクエストを発行すると、何か操作を行う前にユーザーの操作が必要なアプリが開きます。

すでに電話番号が入力されているアプリを開くと、ボタンを押すだけで済みます。

誤って誤って写真撮るした場合よりも、誰かを呼び出しますはるかに高いリスクがあります(誤って服用すればあなただけ削除できます。)

+0

はどうもありがとうございました。 –

19

あなたは(ユーザの確認を必要とする)だけで直接呼び出すことなく、特定の電話番号にダイヤラを開きたい場合は、実際に、あなたが任意の許可なしにそれを行うことができます。

startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + PhoneNumber))); 
+0

これは私の問題を解決しました。これにより、ユーザーは何が起こるかを制御できます。 – Umair